@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createUnaryCallable( httpJsonCallSettings, callSettings, clientContext); }
@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, BatchingCallSettings<RequestT, ResponseT> batchingCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createBatchingCallable( httpJsonCallSettings, batchingCallSettings, clientContext); } }
@Override public <RequestT, ResponseT, PagedListResponseT> UnaryCallable<RequestT, PagedListResponseT> createPagedCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, PagedCallSettings<RequestT, ResponseT, PagedListResponseT> pagedCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createPagedCallable( httpJsonCallSettings, pagedCallSettings, clientContext); }
/** * Create a callable object with http/json-specific functionality. Designed for use by generated * code. * * @param httpJsonCallSettings the http/json call settings * @param callSettings {@link UnaryCallSettings} to configure the method-level settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> innerCallable = createDirectUnaryCallable(httpJsonCallSettings); innerCallable = new TracedUnaryCallable<>( innerCallable, clientContext.getTracerFactory(), getSpanName(httpJsonCallSettings.getMethodDescriptor())); return createUnaryCallable(innerCallable, callSettings, clientContext); }
/** * Create a callable object that represents a batching API method. Designed for use by generated * code. * * @param httpJsonCallSettings the http/json call settings * @param batchingCallSettings {@link BatchingCallSettings} to configure the batching related * settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, BatchingCallSettings<RequestT, ResponseT> batchingCallSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createDirectUnaryCallable(httpJsonCallSettings); callable = createUnaryCallable(callable, batchingCallSettings, clientContext); callable = Callables.batching(callable, batchingCallSettings, clientContext); return callable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
@Test public void testGetSpanName() { Map<String, SpanName> validNames = ImmutableMap.of( "compute.projects.disableXpnHost", SpanName.of("compute.projects", "disableXpnHost"), "client.method", SpanName.of("client", "method")); for (Entry<String, SpanName> entry : validNames.entrySet()) { @SuppressWarnings("unchecked") ApiMethodDescriptor descriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName(entry.getKey()) .setHttpMethod(HttpMethods.POST) .setRequestFormatter(Mockito.mock(HttpRequestFormatter.class)) .setResponseParser(Mockito.mock(HttpResponseParser.class)) .build(); SpanName actualSpanName = HttpJsonCallableFactory.getSpanName(descriptor); assertThat(actualSpanName).isEqualTo(entry.getValue()); } }
/** * Create a callable object with http/json-specific functionality. Designed for use by generated * code. * * @param httpJsonCallSettings the http/json call settings * @param callSettings {@link UnaryCallSettings} to configure the method-level settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> innerCallable = createDirectUnaryCallable(httpJsonCallSettings); innerCallable = new TracedUnaryCallable<>( innerCallable, clientContext.getTracerFactory(), getSpanName(httpJsonCallSettings.getMethodDescriptor())); return createUnaryCallable(innerCallable, callSettings, clientContext); }
/** * Create a callable object that represents a batching API method. Designed for use by generated * code. * * @param httpJsonCallSettings the http/json call settings * @param batchingCallSettings {@link BatchingCallSettings} to configure the batching related * settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, BatchingCallSettings<RequestT, ResponseT> batchingCallSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createDirectUnaryCallable(httpJsonCallSettings); callable = createUnaryCallable(callable, batchingCallSettings, clientContext); callable = Callables.batching(callable, batchingCallSettings, clientContext); return callable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
@Test public void testGetSpanNameInvalid() { List<String> invalidNames = ImmutableList.of("no_split", ".no_client"); for (String invalidName : invalidNames) { @SuppressWarnings("unchecked") ApiMethodDescriptor descriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName(invalidName) .setHttpMethod(HttpMethods.POST) .setRequestFormatter(Mockito.mock(HttpRequestFormatter.class)) .setResponseParser(Mockito.mock(HttpResponseParser.class)) .build(); IllegalArgumentException actualError = null; try { SpanName spanName = HttpJsonCallableFactory.getSpanName(descriptor); assertWithMessage("Invalid method descriptor should not have a valid span name") .fail("%s should not generate the spanName: %s", invalidName, spanName); } catch (IllegalArgumentException e) { actualError = e; } assertThat(actualError).isNotNull(); } } }
@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createUnaryCallable( httpJsonCallSettings, callSettings, clientContext); }
/** * Create a paged callable object that represents a paged API method. Designed for use by * generated code. * * @param httpJsonCallSettings the http/json call settings * @param pagedCallSettings {@link PagedCallSettings} to configure the paged settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT, PagedListResponseT> UnaryCallable<RequestT, PagedListResponseT> createPagedCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, PagedCallSettings<RequestT, ResponseT, PagedListResponseT> pagedCallSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createDirectUnaryCallable(httpJsonCallSettings); callable = createUnaryCallable(callable, pagedCallSettings, clientContext); UnaryCallable<RequestT, PagedListResponseT> pagedCallable = Callables.paged(callable, pagedCallSettings); return pagedCallable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, BatchingCallSettings<RequestT, ResponseT> batchingCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createBatchingCallable( httpJsonCallSettings, batchingCallSettings, clientContext); } }
@Override public <RequestT, ResponseT, PagedListResponseT> UnaryCallable<RequestT, PagedListResponseT> createPagedCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, PagedCallSettings<RequestT, ResponseT, PagedListResponseT> pagedCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createPagedCallable( httpJsonCallSettings, pagedCallSettings, clientContext); }
@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createUnaryCallable( httpJsonCallSettings, callSettings, clientContext); }
/** * Create a paged callable object that represents a paged API method. Designed for use by * generated code. * * @param httpJsonCallSettings the http/json call settings * @param pagedCallSettings {@link PagedCallSettings} to configure the paged settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT, PagedListResponseT> UnaryCallable<RequestT, PagedListResponseT> createPagedCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, PagedCallSettings<RequestT, ResponseT, PagedListResponseT> pagedCallSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createDirectUnaryCallable(httpJsonCallSettings); callable = createUnaryCallable(callable, pagedCallSettings, clientContext); UnaryCallable<RequestT, PagedListResponseT> pagedCallable = Callables.paged(callable, pagedCallSettings); return pagedCallable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, BatchingCallSettings<RequestT, ResponseT> batchingCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createBatchingCallable( httpJsonCallSettings, batchingCallSettings, clientContext); } }
@Override public <RequestT, ResponseT, PagedListResponseT> UnaryCallable<RequestT, PagedListResponseT> createPagedCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, PagedCallSettings<RequestT, ResponseT, PagedListResponseT> pagedCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createPagedCallable( httpJsonCallSettings, pagedCallSettings, clientContext); }
@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createUnaryCallable( httpJsonCallSettings, callSettings, clientContext); }
@Override public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, BatchingCallSettings<RequestT, ResponseT> batchingCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createBatchingCallable( httpJsonCallSettings, batchingCallSettings, clientContext); } }
@Override public <RequestT, ResponseT, PagedListResponseT> UnaryCallable<RequestT, PagedListResponseT> createPagedCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, PagedCallSettings<RequestT, ResponseT, PagedListResponseT> pagedCallSettings, ClientContext clientContext) { return HttpJsonCallableFactory.createPagedCallable( httpJsonCallSettings, pagedCallSettings, clientContext); }