• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 io.grafeas.v1.stub;
18 
19 import static io.grafeas.v1.GrafeasClient.ListNoteOccurrencesPagedResponse;
20 import static io.grafeas.v1.GrafeasClient.ListNotesPagedResponse;
21 import static io.grafeas.v1.GrafeasClient.ListOccurrencesPagedResponse;
22 
23 import com.google.api.core.ApiFunction;
24 import com.google.api.core.ApiFuture;
25 import com.google.api.core.BetaApi;
26 import com.google.api.gax.core.GaxProperties;
27 import com.google.api.gax.core.GoogleCredentialsProvider;
28 import com.google.api.gax.core.InstantiatingExecutorProvider;
29 import com.google.api.gax.grpc.GaxGrpcProperties;
30 import com.google.api.gax.grpc.GrpcTransportChannel;
31 import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
32 import com.google.api.gax.retrying.RetrySettings;
33 import com.google.api.gax.rpc.ApiCallContext;
34 import com.google.api.gax.rpc.ApiClientHeaderProvider;
35 import com.google.api.gax.rpc.ClientContext;
36 import com.google.api.gax.rpc.PageContext;
37 import com.google.api.gax.rpc.PagedCallSettings;
38 import com.google.api.gax.rpc.PagedListDescriptor;
39 import com.google.api.gax.rpc.PagedListResponseFactory;
40 import com.google.api.gax.rpc.StatusCode;
41 import com.google.api.gax.rpc.StubSettings;
42 import com.google.api.gax.rpc.TransportChannelProvider;
43 import com.google.api.gax.rpc.UnaryCallSettings;
44 import com.google.api.gax.rpc.UnaryCallable;
45 import com.google.common.collect.ImmutableList;
46 import com.google.common.collect.ImmutableMap;
47 import com.google.common.collect.ImmutableSet;
48 import com.google.common.collect.Lists;
49 import com.google.protobuf.Empty;
50 import io.grafeas.v1.BatchCreateNotesRequest;
51 import io.grafeas.v1.BatchCreateNotesResponse;
52 import io.grafeas.v1.BatchCreateOccurrencesRequest;
53 import io.grafeas.v1.BatchCreateOccurrencesResponse;
54 import io.grafeas.v1.CreateNoteRequest;
55 import io.grafeas.v1.CreateOccurrenceRequest;
56 import io.grafeas.v1.DeleteNoteRequest;
57 import io.grafeas.v1.DeleteOccurrenceRequest;
58 import io.grafeas.v1.GetNoteRequest;
59 import io.grafeas.v1.GetOccurrenceNoteRequest;
60 import io.grafeas.v1.GetOccurrenceRequest;
61 import io.grafeas.v1.ListNoteOccurrencesRequest;
62 import io.grafeas.v1.ListNoteOccurrencesResponse;
63 import io.grafeas.v1.ListNotesRequest;
64 import io.grafeas.v1.ListNotesResponse;
65 import io.grafeas.v1.ListOccurrencesRequest;
66 import io.grafeas.v1.ListOccurrencesResponse;
67 import io.grafeas.v1.Note;
68 import io.grafeas.v1.Occurrence;
69 import io.grafeas.v1.UpdateNoteRequest;
70 import io.grafeas.v1.UpdateOccurrenceRequest;
71 import java.io.IOException;
72 import java.util.List;
73 import javax.annotation.Generated;
74 import org.threeten.bp.Duration;
75 
76 // AUTO-GENERATED DOCUMENTATION AND CLASS.
77 /**
78  * Settings class to configure an instance of {@link GrafeasStub}.
79  *
80  * <p>The default instance has everything set to sensible defaults:
81  *
82  * <ul>
83  *   <li>Credentials are acquired automatically through Application Default Credentials.
84  *   <li>Retries are configured for idempotent methods but not for non-idempotent methods.
85  * </ul>
86  *
87  * <p>The builder of this class is recursive, so contained classes are themselves builders. When
88  * build() is called, the tree of builders is called to create the complete settings object.
89  *
90  * <p>For example, to set the total timeout of getOccurrence to 30 seconds:
91  *
92  * <pre>{@code
93  * // This snippet has been automatically generated and should be regarded as a code template only.
94  * // It will require modifications to work:
95  * // - It may require correct/in-range values for request initialization.
96  * // - It may require specifying regional endpoints when creating the service client as shown in
97  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
98  * GrafeasStubSettings.Builder grafeasSettingsBuilder = GrafeasStubSettings.newBuilder();
99  * grafeasSettingsBuilder
100  *     .getOccurrenceSettings()
101  *     .setRetrySettings(
102  *         grafeasSettingsBuilder
103  *             .getOccurrenceSettings()
104  *             .getRetrySettings()
105  *             .toBuilder()
106  *             .setTotalTimeout(Duration.ofSeconds(30))
107  *             .build());
108  * GrafeasStubSettings grafeasSettings = grafeasSettingsBuilder.build();
109  * }</pre>
110  */
111 @Generated("by gapic-generator-java")
112 public class GrafeasStubSettings extends StubSettings<GrafeasStubSettings> {
113   /** The default scopes of the service. */
114   private static final ImmutableList<String> DEFAULT_SERVICE_SCOPES =
115       ImmutableList.<String>builder().build();
116 
117   private final UnaryCallSettings<GetOccurrenceRequest, Occurrence> getOccurrenceSettings;
118   private final PagedCallSettings<
119           ListOccurrencesRequest, ListOccurrencesResponse, ListOccurrencesPagedResponse>
120       listOccurrencesSettings;
121   private final UnaryCallSettings<DeleteOccurrenceRequest, Empty> deleteOccurrenceSettings;
122   private final UnaryCallSettings<CreateOccurrenceRequest, Occurrence> createOccurrenceSettings;
123   private final UnaryCallSettings<BatchCreateOccurrencesRequest, BatchCreateOccurrencesResponse>
124       batchCreateOccurrencesSettings;
125   private final UnaryCallSettings<UpdateOccurrenceRequest, Occurrence> updateOccurrenceSettings;
126   private final UnaryCallSettings<GetOccurrenceNoteRequest, Note> getOccurrenceNoteSettings;
127   private final UnaryCallSettings<GetNoteRequest, Note> getNoteSettings;
128   private final PagedCallSettings<ListNotesRequest, ListNotesResponse, ListNotesPagedResponse>
129       listNotesSettings;
130   private final UnaryCallSettings<DeleteNoteRequest, Empty> deleteNoteSettings;
131   private final UnaryCallSettings<CreateNoteRequest, Note> createNoteSettings;
132   private final UnaryCallSettings<BatchCreateNotesRequest, BatchCreateNotesResponse>
133       batchCreateNotesSettings;
134   private final UnaryCallSettings<UpdateNoteRequest, Note> updateNoteSettings;
135   private final PagedCallSettings<
136           ListNoteOccurrencesRequest, ListNoteOccurrencesResponse, ListNoteOccurrencesPagedResponse>
137       listNoteOccurrencesSettings;
138 
139   private static final PagedListDescriptor<
140           ListOccurrencesRequest, ListOccurrencesResponse, Occurrence>
141       LIST_OCCURRENCES_PAGE_STR_DESC =
142           new PagedListDescriptor<ListOccurrencesRequest, ListOccurrencesResponse, Occurrence>() {
143             @Override
144             public String emptyToken() {
145               return "";
146             }
147 
148             @Override
149             public ListOccurrencesRequest injectToken(
150                 ListOccurrencesRequest payload, String token) {
151               return ListOccurrencesRequest.newBuilder(payload).setPageToken(token).build();
152             }
153 
154             @Override
155             public ListOccurrencesRequest injectPageSize(
156                 ListOccurrencesRequest payload, int pageSize) {
157               return ListOccurrencesRequest.newBuilder(payload).setPageSize(pageSize).build();
158             }
159 
160             @Override
161             public Integer extractPageSize(ListOccurrencesRequest payload) {
162               return payload.getPageSize();
163             }
164 
165             @Override
166             public String extractNextToken(ListOccurrencesResponse payload) {
167               return payload.getNextPageToken();
168             }
169 
170             @Override
171             public Iterable<Occurrence> extractResources(ListOccurrencesResponse payload) {
172               return payload.getOccurrencesList() == null
173                   ? ImmutableList.<Occurrence>of()
174                   : payload.getOccurrencesList();
175             }
176           };
177 
178   private static final PagedListDescriptor<ListNotesRequest, ListNotesResponse, Note>
179       LIST_NOTES_PAGE_STR_DESC =
180           new PagedListDescriptor<ListNotesRequest, ListNotesResponse, Note>() {
181             @Override
182             public String emptyToken() {
183               return "";
184             }
185 
186             @Override
187             public ListNotesRequest injectToken(ListNotesRequest payload, String token) {
188               return ListNotesRequest.newBuilder(payload).setPageToken(token).build();
189             }
190 
191             @Override
192             public ListNotesRequest injectPageSize(ListNotesRequest payload, int pageSize) {
193               return ListNotesRequest.newBuilder(payload).setPageSize(pageSize).build();
194             }
195 
196             @Override
197             public Integer extractPageSize(ListNotesRequest payload) {
198               return payload.getPageSize();
199             }
200 
201             @Override
202             public String extractNextToken(ListNotesResponse payload) {
203               return payload.getNextPageToken();
204             }
205 
206             @Override
207             public Iterable<Note> extractResources(ListNotesResponse payload) {
208               return payload.getNotesList() == null
209                   ? ImmutableList.<Note>of()
210                   : payload.getNotesList();
211             }
212           };
213 
214   private static final PagedListDescriptor<
215           ListNoteOccurrencesRequest, ListNoteOccurrencesResponse, Occurrence>
216       LIST_NOTE_OCCURRENCES_PAGE_STR_DESC =
217           new PagedListDescriptor<
218               ListNoteOccurrencesRequest, ListNoteOccurrencesResponse, Occurrence>() {
219             @Override
220             public String emptyToken() {
221               return "";
222             }
223 
224             @Override
225             public ListNoteOccurrencesRequest injectToken(
226                 ListNoteOccurrencesRequest payload, String token) {
227               return ListNoteOccurrencesRequest.newBuilder(payload).setPageToken(token).build();
228             }
229 
230             @Override
231             public ListNoteOccurrencesRequest injectPageSize(
232                 ListNoteOccurrencesRequest payload, int pageSize) {
233               return ListNoteOccurrencesRequest.newBuilder(payload).setPageSize(pageSize).build();
234             }
235 
236             @Override
237             public Integer extractPageSize(ListNoteOccurrencesRequest payload) {
238               return payload.getPageSize();
239             }
240 
241             @Override
242             public String extractNextToken(ListNoteOccurrencesResponse payload) {
243               return payload.getNextPageToken();
244             }
245 
246             @Override
247             public Iterable<Occurrence> extractResources(ListNoteOccurrencesResponse payload) {
248               return payload.getOccurrencesList() == null
249                   ? ImmutableList.<Occurrence>of()
250                   : payload.getOccurrencesList();
251             }
252           };
253 
254   private static final PagedListResponseFactory<
255           ListOccurrencesRequest, ListOccurrencesResponse, ListOccurrencesPagedResponse>
256       LIST_OCCURRENCES_PAGE_STR_FACT =
257           new PagedListResponseFactory<
258               ListOccurrencesRequest, ListOccurrencesResponse, ListOccurrencesPagedResponse>() {
259             @Override
260             public ApiFuture<ListOccurrencesPagedResponse> getFuturePagedResponse(
261                 UnaryCallable<ListOccurrencesRequest, ListOccurrencesResponse> callable,
262                 ListOccurrencesRequest request,
263                 ApiCallContext context,
264                 ApiFuture<ListOccurrencesResponse> futureResponse) {
265               PageContext<ListOccurrencesRequest, ListOccurrencesResponse, Occurrence> pageContext =
266                   PageContext.create(callable, LIST_OCCURRENCES_PAGE_STR_DESC, request, context);
267               return ListOccurrencesPagedResponse.createAsync(pageContext, futureResponse);
268             }
269           };
270 
271   private static final PagedListResponseFactory<
272           ListNotesRequest, ListNotesResponse, ListNotesPagedResponse>
273       LIST_NOTES_PAGE_STR_FACT =
274           new PagedListResponseFactory<
275               ListNotesRequest, ListNotesResponse, ListNotesPagedResponse>() {
276             @Override
277             public ApiFuture<ListNotesPagedResponse> getFuturePagedResponse(
278                 UnaryCallable<ListNotesRequest, ListNotesResponse> callable,
279                 ListNotesRequest request,
280                 ApiCallContext context,
281                 ApiFuture<ListNotesResponse> futureResponse) {
282               PageContext<ListNotesRequest, ListNotesResponse, Note> pageContext =
283                   PageContext.create(callable, LIST_NOTES_PAGE_STR_DESC, request, context);
284               return ListNotesPagedResponse.createAsync(pageContext, futureResponse);
285             }
286           };
287 
288   private static final PagedListResponseFactory<
289           ListNoteOccurrencesRequest, ListNoteOccurrencesResponse, ListNoteOccurrencesPagedResponse>
290       LIST_NOTE_OCCURRENCES_PAGE_STR_FACT =
291           new PagedListResponseFactory<
292               ListNoteOccurrencesRequest,
293               ListNoteOccurrencesResponse,
294               ListNoteOccurrencesPagedResponse>() {
295             @Override
296             public ApiFuture<ListNoteOccurrencesPagedResponse> getFuturePagedResponse(
297                 UnaryCallable<ListNoteOccurrencesRequest, ListNoteOccurrencesResponse> callable,
298                 ListNoteOccurrencesRequest request,
299                 ApiCallContext context,
300                 ApiFuture<ListNoteOccurrencesResponse> futureResponse) {
301               PageContext<ListNoteOccurrencesRequest, ListNoteOccurrencesResponse, Occurrence>
302                   pageContext =
303                       PageContext.create(
304                           callable, LIST_NOTE_OCCURRENCES_PAGE_STR_DESC, request, context);
305               return ListNoteOccurrencesPagedResponse.createAsync(pageContext, futureResponse);
306             }
307           };
308 
309   /** Returns the object with the settings used for calls to getOccurrence. */
getOccurrenceSettings()310   public UnaryCallSettings<GetOccurrenceRequest, Occurrence> getOccurrenceSettings() {
311     return getOccurrenceSettings;
312   }
313 
314   /** Returns the object with the settings used for calls to listOccurrences. */
315   public PagedCallSettings<
316           ListOccurrencesRequest, ListOccurrencesResponse, ListOccurrencesPagedResponse>
listOccurrencesSettings()317       listOccurrencesSettings() {
318     return listOccurrencesSettings;
319   }
320 
321   /** Returns the object with the settings used for calls to deleteOccurrence. */
deleteOccurrenceSettings()322   public UnaryCallSettings<DeleteOccurrenceRequest, Empty> deleteOccurrenceSettings() {
323     return deleteOccurrenceSettings;
324   }
325 
326   /** Returns the object with the settings used for calls to createOccurrence. */
createOccurrenceSettings()327   public UnaryCallSettings<CreateOccurrenceRequest, Occurrence> createOccurrenceSettings() {
328     return createOccurrenceSettings;
329   }
330 
331   /** Returns the object with the settings used for calls to batchCreateOccurrences. */
332   public UnaryCallSettings<BatchCreateOccurrencesRequest, BatchCreateOccurrencesResponse>
batchCreateOccurrencesSettings()333       batchCreateOccurrencesSettings() {
334     return batchCreateOccurrencesSettings;
335   }
336 
337   /** Returns the object with the settings used for calls to updateOccurrence. */
updateOccurrenceSettings()338   public UnaryCallSettings<UpdateOccurrenceRequest, Occurrence> updateOccurrenceSettings() {
339     return updateOccurrenceSettings;
340   }
341 
342   /** Returns the object with the settings used for calls to getOccurrenceNote. */
getOccurrenceNoteSettings()343   public UnaryCallSettings<GetOccurrenceNoteRequest, Note> getOccurrenceNoteSettings() {
344     return getOccurrenceNoteSettings;
345   }
346 
347   /** Returns the object with the settings used for calls to getNote. */
getNoteSettings()348   public UnaryCallSettings<GetNoteRequest, Note> getNoteSettings() {
349     return getNoteSettings;
350   }
351 
352   /** Returns the object with the settings used for calls to listNotes. */
353   public PagedCallSettings<ListNotesRequest, ListNotesResponse, ListNotesPagedResponse>
listNotesSettings()354       listNotesSettings() {
355     return listNotesSettings;
356   }
357 
358   /** Returns the object with the settings used for calls to deleteNote. */
deleteNoteSettings()359   public UnaryCallSettings<DeleteNoteRequest, Empty> deleteNoteSettings() {
360     return deleteNoteSettings;
361   }
362 
363   /** Returns the object with the settings used for calls to createNote. */
createNoteSettings()364   public UnaryCallSettings<CreateNoteRequest, Note> createNoteSettings() {
365     return createNoteSettings;
366   }
367 
368   /** Returns the object with the settings used for calls to batchCreateNotes. */
369   public UnaryCallSettings<BatchCreateNotesRequest, BatchCreateNotesResponse>
batchCreateNotesSettings()370       batchCreateNotesSettings() {
371     return batchCreateNotesSettings;
372   }
373 
374   /** Returns the object with the settings used for calls to updateNote. */
updateNoteSettings()375   public UnaryCallSettings<UpdateNoteRequest, Note> updateNoteSettings() {
376     return updateNoteSettings;
377   }
378 
379   /** Returns the object with the settings used for calls to listNoteOccurrences. */
380   public PagedCallSettings<
381           ListNoteOccurrencesRequest, ListNoteOccurrencesResponse, ListNoteOccurrencesPagedResponse>
listNoteOccurrencesSettings()382       listNoteOccurrencesSettings() {
383     return listNoteOccurrencesSettings;
384   }
385 
createStub()386   public GrafeasStub createStub() throws IOException {
387     if (getTransportChannelProvider()
388         .getTransportName()
389         .equals(GrpcTransportChannel.getGrpcTransportName())) {
390       return GrpcGrafeasStub.create(this);
391     }
392     throw new UnsupportedOperationException(
393         String.format(
394             "Transport not supported: %s", getTransportChannelProvider().getTransportName()));
395   }
396 
397   /** Returns a builder for the default ExecutorProvider for this service. */
defaultExecutorProviderBuilder()398   public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() {
399     return InstantiatingExecutorProvider.newBuilder();
400   }
401 
402   /** Returns the default service endpoint. */
getDefaultEndpoint()403   public static String getDefaultEndpoint() {
404     return null;
405   }
406 
407   /** Returns the default mTLS service endpoint. */
getDefaultMtlsEndpoint()408   public static String getDefaultMtlsEndpoint() {
409     return "containeranalysis.mtls.googleapis.com:443";
410   }
411 
412   /** Returns the default service scopes. */
getDefaultServiceScopes()413   public static List<String> getDefaultServiceScopes() {
414     return DEFAULT_SERVICE_SCOPES;
415   }
416 
417   /** Returns a builder for the default credentials for this service. */
defaultCredentialsProviderBuilder()418   public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
419     return GoogleCredentialsProvider.newBuilder()
420         .setScopesToApply(DEFAULT_SERVICE_SCOPES)
421         .setUseJwtAccessWithScope(true);
422   }
423 
424   /** Returns a builder for the default ChannelProvider for this service. */
defaultGrpcTransportProviderBuilder()425   public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() {
426     return InstantiatingGrpcChannelProvider.newBuilder()
427         .setMaxInboundMessageSize(Integer.MAX_VALUE);
428   }
429 
defaultTransportChannelProvider()430   public static TransportChannelProvider defaultTransportChannelProvider() {
431     return defaultGrpcTransportProviderBuilder().build();
432   }
433 
434   @BetaApi("The surface for customizing headers is not stable yet and may change in the future.")
defaultApiClientHeaderProviderBuilder()435   public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() {
436     return ApiClientHeaderProvider.newBuilder()
437         .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(GrafeasStubSettings.class))
438         .setTransportToken(
439             GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion());
440   }
441 
442   /** Returns a new builder for this class. */
newBuilder()443   public static Builder newBuilder() {
444     return Builder.createDefault();
445   }
446 
447   /** Returns a new builder for this class. */
newBuilder(ClientContext clientContext)448   public static Builder newBuilder(ClientContext clientContext) {
449     return new Builder(clientContext);
450   }
451 
452   /** Returns a builder containing all the values of this settings class. */
toBuilder()453   public Builder toBuilder() {
454     return new Builder(this);
455   }
456 
GrafeasStubSettings(Builder settingsBuilder)457   protected GrafeasStubSettings(Builder settingsBuilder) throws IOException {
458     super(settingsBuilder);
459 
460     getOccurrenceSettings = settingsBuilder.getOccurrenceSettings().build();
461     listOccurrencesSettings = settingsBuilder.listOccurrencesSettings().build();
462     deleteOccurrenceSettings = settingsBuilder.deleteOccurrenceSettings().build();
463     createOccurrenceSettings = settingsBuilder.createOccurrenceSettings().build();
464     batchCreateOccurrencesSettings = settingsBuilder.batchCreateOccurrencesSettings().build();
465     updateOccurrenceSettings = settingsBuilder.updateOccurrenceSettings().build();
466     getOccurrenceNoteSettings = settingsBuilder.getOccurrenceNoteSettings().build();
467     getNoteSettings = settingsBuilder.getNoteSettings().build();
468     listNotesSettings = settingsBuilder.listNotesSettings().build();
469     deleteNoteSettings = settingsBuilder.deleteNoteSettings().build();
470     createNoteSettings = settingsBuilder.createNoteSettings().build();
471     batchCreateNotesSettings = settingsBuilder.batchCreateNotesSettings().build();
472     updateNoteSettings = settingsBuilder.updateNoteSettings().build();
473     listNoteOccurrencesSettings = settingsBuilder.listNoteOccurrencesSettings().build();
474   }
475 
476   /** Builder for GrafeasStubSettings. */
477   public static class Builder extends StubSettings.Builder<GrafeasStubSettings, Builder> {
478     private final ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders;
479     private final UnaryCallSettings.Builder<GetOccurrenceRequest, Occurrence> getOccurrenceSettings;
480     private final PagedCallSettings.Builder<
481             ListOccurrencesRequest, ListOccurrencesResponse, ListOccurrencesPagedResponse>
482         listOccurrencesSettings;
483     private final UnaryCallSettings.Builder<DeleteOccurrenceRequest, Empty>
484         deleteOccurrenceSettings;
485     private final UnaryCallSettings.Builder<CreateOccurrenceRequest, Occurrence>
486         createOccurrenceSettings;
487     private final UnaryCallSettings.Builder<
488             BatchCreateOccurrencesRequest, BatchCreateOccurrencesResponse>
489         batchCreateOccurrencesSettings;
490     private final UnaryCallSettings.Builder<UpdateOccurrenceRequest, Occurrence>
491         updateOccurrenceSettings;
492     private final UnaryCallSettings.Builder<GetOccurrenceNoteRequest, Note>
493         getOccurrenceNoteSettings;
494     private final UnaryCallSettings.Builder<GetNoteRequest, Note> getNoteSettings;
495     private final PagedCallSettings.Builder<
496             ListNotesRequest, ListNotesResponse, ListNotesPagedResponse>
497         listNotesSettings;
498     private final UnaryCallSettings.Builder<DeleteNoteRequest, Empty> deleteNoteSettings;
499     private final UnaryCallSettings.Builder<CreateNoteRequest, Note> createNoteSettings;
500     private final UnaryCallSettings.Builder<BatchCreateNotesRequest, BatchCreateNotesResponse>
501         batchCreateNotesSettings;
502     private final UnaryCallSettings.Builder<UpdateNoteRequest, Note> updateNoteSettings;
503     private final PagedCallSettings.Builder<
504             ListNoteOccurrencesRequest,
505             ListNoteOccurrencesResponse,
506             ListNoteOccurrencesPagedResponse>
507         listNoteOccurrencesSettings;
508     private static final ImmutableMap<String, ImmutableSet<StatusCode.Code>>
509         RETRYABLE_CODE_DEFINITIONS;
510 
511     static {
512       ImmutableMap.Builder<String, ImmutableSet<StatusCode.Code>> definitions =
513           ImmutableMap.builder();
514       definitions.put(
515           "retry_policy_0_codes",
516           ImmutableSet.copyOf(
517               Lists.<StatusCode.Code>newArrayList(
518                   StatusCode.Code.UNAVAILABLE, StatusCode.Code.DEADLINE_EXCEEDED)));
519       definitions.put(
520           "no_retry_1_codes", ImmutableSet.copyOf(Lists.<StatusCode.Code>newArrayList()));
521       RETRYABLE_CODE_DEFINITIONS = definitions.build();
522     }
523 
524     private static final ImmutableMap<String, RetrySettings> RETRY_PARAM_DEFINITIONS;
525 
526     static {
527       ImmutableMap.Builder<String, RetrySettings> definitions = ImmutableMap.builder();
528       RetrySettings settings = null;
529       settings =
530           RetrySettings.newBuilder()
531               .setInitialRetryDelay(Duration.ofMillis(100L))
532               .setRetryDelayMultiplier(1.3)
533               .setMaxRetryDelay(Duration.ofMillis(60000L))
534               .setInitialRpcTimeout(Duration.ofMillis(30000L))
535               .setRpcTimeoutMultiplier(1.0)
536               .setMaxRpcTimeout(Duration.ofMillis(30000L))
537               .setTotalTimeout(Duration.ofMillis(30000L))
538               .build();
539       definitions.put("retry_policy_0_params", settings);
540       settings =
541           RetrySettings.newBuilder()
542               .setInitialRpcTimeout(Duration.ofMillis(30000L))
543               .setRpcTimeoutMultiplier(1.0)
544               .setMaxRpcTimeout(Duration.ofMillis(30000L))
545               .setTotalTimeout(Duration.ofMillis(30000L))
546               .build();
547       definitions.put("no_retry_1_params", settings);
548       RETRY_PARAM_DEFINITIONS = definitions.build();
549     }
550 
Builder()551     protected Builder() {
552       this(((ClientContext) null));
553     }
554 
Builder(ClientContext clientContext)555     protected Builder(ClientContext clientContext) {
556       super(clientContext);
557 
558       getOccurrenceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
559       listOccurrencesSettings = PagedCallSettings.newBuilder(LIST_OCCURRENCES_PAGE_STR_FACT);
560       deleteOccurrenceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
561       createOccurrenceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
562       batchCreateOccurrencesSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
563       updateOccurrenceSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
564       getOccurrenceNoteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
565       getNoteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
566       listNotesSettings = PagedCallSettings.newBuilder(LIST_NOTES_PAGE_STR_FACT);
567       deleteNoteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
568       createNoteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
569       batchCreateNotesSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
570       updateNoteSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
571       listNoteOccurrencesSettings =
572           PagedCallSettings.newBuilder(LIST_NOTE_OCCURRENCES_PAGE_STR_FACT);
573 
574       unaryMethodSettingsBuilders =
575           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
576               getOccurrenceSettings,
577               listOccurrencesSettings,
578               deleteOccurrenceSettings,
579               createOccurrenceSettings,
580               batchCreateOccurrencesSettings,
581               updateOccurrenceSettings,
582               getOccurrenceNoteSettings,
583               getNoteSettings,
584               listNotesSettings,
585               deleteNoteSettings,
586               createNoteSettings,
587               batchCreateNotesSettings,
588               updateNoteSettings,
589               listNoteOccurrencesSettings);
590       initDefaults(this);
591     }
592 
Builder(GrafeasStubSettings settings)593     protected Builder(GrafeasStubSettings settings) {
594       super(settings);
595 
596       getOccurrenceSettings = settings.getOccurrenceSettings.toBuilder();
597       listOccurrencesSettings = settings.listOccurrencesSettings.toBuilder();
598       deleteOccurrenceSettings = settings.deleteOccurrenceSettings.toBuilder();
599       createOccurrenceSettings = settings.createOccurrenceSettings.toBuilder();
600       batchCreateOccurrencesSettings = settings.batchCreateOccurrencesSettings.toBuilder();
601       updateOccurrenceSettings = settings.updateOccurrenceSettings.toBuilder();
602       getOccurrenceNoteSettings = settings.getOccurrenceNoteSettings.toBuilder();
603       getNoteSettings = settings.getNoteSettings.toBuilder();
604       listNotesSettings = settings.listNotesSettings.toBuilder();
605       deleteNoteSettings = settings.deleteNoteSettings.toBuilder();
606       createNoteSettings = settings.createNoteSettings.toBuilder();
607       batchCreateNotesSettings = settings.batchCreateNotesSettings.toBuilder();
608       updateNoteSettings = settings.updateNoteSettings.toBuilder();
609       listNoteOccurrencesSettings = settings.listNoteOccurrencesSettings.toBuilder();
610 
611       unaryMethodSettingsBuilders =
612           ImmutableList.<UnaryCallSettings.Builder<?, ?>>of(
613               getOccurrenceSettings,
614               listOccurrencesSettings,
615               deleteOccurrenceSettings,
616               createOccurrenceSettings,
617               batchCreateOccurrencesSettings,
618               updateOccurrenceSettings,
619               getOccurrenceNoteSettings,
620               getNoteSettings,
621               listNotesSettings,
622               deleteNoteSettings,
623               createNoteSettings,
624               batchCreateNotesSettings,
625               updateNoteSettings,
626               listNoteOccurrencesSettings);
627     }
628 
createDefault()629     private static Builder createDefault() {
630       Builder builder = new Builder(((ClientContext) null));
631 
632       builder.setTransportChannelProvider(defaultTransportChannelProvider());
633       builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build());
634       builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build());
635       builder.setEndpoint(getDefaultEndpoint());
636       builder.setMtlsEndpoint(getDefaultMtlsEndpoint());
637       builder.setSwitchToMtlsEndpointAllowed(true);
638 
639       return initDefaults(builder);
640     }
641 
initDefaults(Builder builder)642     private static Builder initDefaults(Builder builder) {
643       builder
644           .getOccurrenceSettings()
645           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
646           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
647 
648       builder
649           .listOccurrencesSettings()
650           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
651           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
652 
653       builder
654           .deleteOccurrenceSettings()
655           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
656           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
657 
658       builder
659           .createOccurrenceSettings()
660           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
661           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
662 
663       builder
664           .batchCreateOccurrencesSettings()
665           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
666           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
667 
668       builder
669           .updateOccurrenceSettings()
670           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
671           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
672 
673       builder
674           .getOccurrenceNoteSettings()
675           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
676           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
677 
678       builder
679           .getNoteSettings()
680           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
681           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
682 
683       builder
684           .listNotesSettings()
685           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
686           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
687 
688       builder
689           .deleteNoteSettings()
690           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
691           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
692 
693       builder
694           .createNoteSettings()
695           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
696           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
697 
698       builder
699           .batchCreateNotesSettings()
700           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
701           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
702 
703       builder
704           .updateNoteSettings()
705           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
706           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
707 
708       builder
709           .listNoteOccurrencesSettings()
710           .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes"))
711           .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params"));
712 
713       return builder;
714     }
715 
716     /**
717      * Applies the given settings updater function to all of the unary API methods in this service.
718      *
719      * <p>Note: This method does not support applying settings to streaming methods.
720      */
applyToAllUnaryMethods( ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater)721     public Builder applyToAllUnaryMethods(
722         ApiFunction<UnaryCallSettings.Builder<?, ?>, Void> settingsUpdater) {
723       super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater);
724       return this;
725     }
726 
unaryMethodSettingsBuilders()727     public ImmutableList<UnaryCallSettings.Builder<?, ?>> unaryMethodSettingsBuilders() {
728       return unaryMethodSettingsBuilders;
729     }
730 
731     /** Returns the builder for the settings used for calls to getOccurrence. */
getOccurrenceSettings()732     public UnaryCallSettings.Builder<GetOccurrenceRequest, Occurrence> getOccurrenceSettings() {
733       return getOccurrenceSettings;
734     }
735 
736     /** Returns the builder for the settings used for calls to listOccurrences. */
737     public PagedCallSettings.Builder<
738             ListOccurrencesRequest, ListOccurrencesResponse, ListOccurrencesPagedResponse>
listOccurrencesSettings()739         listOccurrencesSettings() {
740       return listOccurrencesSettings;
741     }
742 
743     /** Returns the builder for the settings used for calls to deleteOccurrence. */
deleteOccurrenceSettings()744     public UnaryCallSettings.Builder<DeleteOccurrenceRequest, Empty> deleteOccurrenceSettings() {
745       return deleteOccurrenceSettings;
746     }
747 
748     /** Returns the builder for the settings used for calls to createOccurrence. */
749     public UnaryCallSettings.Builder<CreateOccurrenceRequest, Occurrence>
createOccurrenceSettings()750         createOccurrenceSettings() {
751       return createOccurrenceSettings;
752     }
753 
754     /** Returns the builder for the settings used for calls to batchCreateOccurrences. */
755     public UnaryCallSettings.Builder<BatchCreateOccurrencesRequest, BatchCreateOccurrencesResponse>
batchCreateOccurrencesSettings()756         batchCreateOccurrencesSettings() {
757       return batchCreateOccurrencesSettings;
758     }
759 
760     /** Returns the builder for the settings used for calls to updateOccurrence. */
761     public UnaryCallSettings.Builder<UpdateOccurrenceRequest, Occurrence>
updateOccurrenceSettings()762         updateOccurrenceSettings() {
763       return updateOccurrenceSettings;
764     }
765 
766     /** Returns the builder for the settings used for calls to getOccurrenceNote. */
getOccurrenceNoteSettings()767     public UnaryCallSettings.Builder<GetOccurrenceNoteRequest, Note> getOccurrenceNoteSettings() {
768       return getOccurrenceNoteSettings;
769     }
770 
771     /** Returns the builder for the settings used for calls to getNote. */
getNoteSettings()772     public UnaryCallSettings.Builder<GetNoteRequest, Note> getNoteSettings() {
773       return getNoteSettings;
774     }
775 
776     /** Returns the builder for the settings used for calls to listNotes. */
777     public PagedCallSettings.Builder<ListNotesRequest, ListNotesResponse, ListNotesPagedResponse>
listNotesSettings()778         listNotesSettings() {
779       return listNotesSettings;
780     }
781 
782     /** Returns the builder for the settings used for calls to deleteNote. */
deleteNoteSettings()783     public UnaryCallSettings.Builder<DeleteNoteRequest, Empty> deleteNoteSettings() {
784       return deleteNoteSettings;
785     }
786 
787     /** Returns the builder for the settings used for calls to createNote. */
createNoteSettings()788     public UnaryCallSettings.Builder<CreateNoteRequest, Note> createNoteSettings() {
789       return createNoteSettings;
790     }
791 
792     /** Returns the builder for the settings used for calls to batchCreateNotes. */
793     public UnaryCallSettings.Builder<BatchCreateNotesRequest, BatchCreateNotesResponse>
batchCreateNotesSettings()794         batchCreateNotesSettings() {
795       return batchCreateNotesSettings;
796     }
797 
798     /** Returns the builder for the settings used for calls to updateNote. */
updateNoteSettings()799     public UnaryCallSettings.Builder<UpdateNoteRequest, Note> updateNoteSettings() {
800       return updateNoteSettings;
801     }
802 
803     /** Returns the builder for the settings used for calls to listNoteOccurrences. */
804     public PagedCallSettings.Builder<
805             ListNoteOccurrencesRequest,
806             ListNoteOccurrencesResponse,
807             ListNoteOccurrencesPagedResponse>
listNoteOccurrencesSettings()808         listNoteOccurrencesSettings() {
809       return listNoteOccurrencesSettings;
810     }
811 
812     @Override
build()813     public GrafeasStubSettings build() throws IOException {
814       return new GrafeasStubSettings(this);
815     }
816   }
817 }
818