Class ArmeriaRetrofitBuilder

java.lang.Object
com.linecorp.armeria.client.AbstractClientOptionsBuilder
com.linecorp.armeria.client.retrofit2.ArmeriaRetrofitBuilder

public final class ArmeriaRetrofitBuilder
extends com.linecorp.armeria.client.AbstractClientOptionsBuilder
A builder that creates a Retrofit which uses WebClient for sending requests.
See Also:
ArmeriaRetrofit
  • Method Details

    • nonBaseClientFactory

      public ArmeriaRetrofitBuilder nonBaseClientFactory​(BiFunction<? super com.linecorp.armeria.common.SessionProtocol,​? super com.linecorp.armeria.client.Endpoint,​? extends com.linecorp.armeria.client.WebClient> nonBaseClientFactory)
      Specifies the BiFunction that creates a new non-base WebClient, which is used for sending requests to other authorities than that of base URL. If not specified, the non-base WebClient will have the same options with the base WebClient, which was specified with ArmeriaRetrofit.of(WebClient) or ArmeriaRetrofit.builder(WebClient).

      To avoid the overhead of repetitive instantiation of WebClients, the WebClients returned by the specified BiFunction will be cached for each combination of:

      • Whether the connection is secured (HTTPS or HTTPS)
      • Host name
      • Port number

      You can use this method to create a customized non-base WebClient, for example to send an additional header, override the timeout or enforce HTTP/1:

      
       ArmeriaRetrofit.builder("http://example.com/")
                      .nonBaseClientFactory((protocol, endpoint) -> {
                          // Enforce HTTP/1.
                          final SessionProtocol actualProtocol =
                                  protocol.isTls() ? SessionProtocol.H1 : SessionProtocol.H1C;
      
                          return WebClient.builder(actualProtocol, endpoint)
                                          // Derive most settings from 'defaultWebClient'.
                                          .factory(defaultWebClient.factory())
                                          .options(defaultWebClient.options())
                                          // Set a custom header.
                                          .setHttpHeader(HttpHeaderNames.AUTHORIZATION,
                                                         "bearer my-access-token")
                                          // Override the timeout.
                                          .responseTimeout(Duration.ofSeconds(30))
                                          .build();
                      })
                      .build();
       

      Note that the specified BiFunction is not used for sending requests to the base URL's authority. The default WebClient specified with ArmeriaRetrofit.of(WebClient) or ArmeriaRetrofit.builder(WebClient) will be used instead for such requests:

      
       // No need to use 'nonBaseClientFactory()' method.
       ArmeriaRetrofit.of(WebClient.builder("http://example.com/")
                                   .setHttpHeader(HttpHeaderNames.AUTHORIZATION,
                                                  "bearer my-access-token")
                                   .build());
       

    • addConverterFactory

      public ArmeriaRetrofitBuilder addConverterFactory​(Converter.Factory factory)
      Adds the specified converter factory for serialization and deserialization of objects.
      See Also:
      Retrofit.Builder.addCallAdapterFactory(CallAdapter.Factory)
    • addCallAdapterFactory

      public ArmeriaRetrofitBuilder addCallAdapterFactory​(CallAdapter.Factory factory)
      Adds the specified call adapter factory for supporting service method return types other than Call.
      See Also:
      Retrofit.Builder.addCallAdapterFactory(CallAdapter.Factory)
    • callbackExecutor

      public ArmeriaRetrofitBuilder callbackExecutor​(Executor executor)
      Sets the Executor on which Callback methods are invoked when returning Call from your service method.

      Note: executor is not used for custom method return types.

      See Also:
      Retrofit.Builder.callbackExecutor(Executor)
    • streaming

      public ArmeriaRetrofitBuilder streaming​(boolean streaming)
      Sets the streaming flag to make Armeria client fully support Streaming. If this flag is false, Armeria client will buffer all data and call a callback after receiving the data completely, even if a service method was annotated with Streaming. By enabling this flag, Armeria client will use the Executor specified with callbackExecutor(Executor) to read the data in a blocking way.

      Note: It is not recommended to have the service methods both with and without the Streaming annotation in the same interface. Consider separating them into different interfaces and using different builder to build the service.

      See Also:
      Streaming
    • validateEagerly

      public ArmeriaRetrofitBuilder validateEagerly​(boolean validateEagerly)
      When calling Retrofit.create(java.lang.Class<T>) on the resulting Retrofit instance, eagerly validate the configuration of all methods in the supplied interface.
      See Also:
      Retrofit.Builder.validateEagerly(boolean)
    • build

      public Retrofit build()
      Returns a newly-created Retrofit based on the properties of this builder.
    • options

      public ArmeriaRetrofitBuilder options​(com.linecorp.armeria.client.ClientOptions options)
      Overrides:
      options in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • options

      public ArmeriaRetrofitBuilder options​(com.linecorp.armeria.client.ClientOptionValue<?>... options)
      Overrides:
      options in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • options

      public ArmeriaRetrofitBuilder options​(Iterable<com.linecorp.armeria.client.ClientOptionValue<?>> options)
      Overrides:
      options in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • option

      public <T> ArmeriaRetrofitBuilder option​(com.linecorp.armeria.client.ClientOption<T> option, T value)
      Overrides:
      option in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • option

      public <T> ArmeriaRetrofitBuilder option​(com.linecorp.armeria.client.ClientOptionValue<T> optionValue)
      Overrides:
      option in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • factory

      public ArmeriaRetrofitBuilder factory​(com.linecorp.armeria.client.ClientFactory factory)
      Overrides:
      factory in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • writeTimeout

      public ArmeriaRetrofitBuilder writeTimeout​(Duration writeTimeout)
      Overrides:
      writeTimeout in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • writeTimeoutMillis

      public ArmeriaRetrofitBuilder writeTimeoutMillis​(long writeTimeoutMillis)
      Overrides:
      writeTimeoutMillis in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • responseTimeout

      public ArmeriaRetrofitBuilder responseTimeout​(Duration responseTimeout)
      Overrides:
      responseTimeout in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • responseTimeoutMillis

      public ArmeriaRetrofitBuilder responseTimeoutMillis​(long responseTimeoutMillis)
      Overrides:
      responseTimeoutMillis in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • maxResponseLength

      public ArmeriaRetrofitBuilder maxResponseLength​(long maxResponseLength)
      Overrides:
      maxResponseLength in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • requestIdGenerator

      public ArmeriaRetrofitBuilder requestIdGenerator​(Supplier<com.linecorp.armeria.common.RequestId> requestIdGenerator)
      Overrides:
      requestIdGenerator in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • endpointRemapper

      public ArmeriaRetrofitBuilder endpointRemapper​(Function<? super com.linecorp.armeria.client.Endpoint,​? extends com.linecorp.armeria.client.endpoint.EndpointGroup> endpointRemapper)
      Overrides:
      endpointRemapper in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • decorator

      public ArmeriaRetrofitBuilder decorator​(Function<? super com.linecorp.armeria.client.HttpClient,​? extends com.linecorp.armeria.client.HttpClient> decorator)
      Overrides:
      decorator in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • decorator

      public ArmeriaRetrofitBuilder decorator​(com.linecorp.armeria.client.DecoratingHttpClientFunction decorator)
      Overrides:
      decorator in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • rpcDecorator

      public ArmeriaRetrofitBuilder rpcDecorator​(Function<? super com.linecorp.armeria.client.RpcClient,​? extends com.linecorp.armeria.client.RpcClient> decorator)
      Overrides:
      rpcDecorator in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • rpcDecorator

      public ArmeriaRetrofitBuilder rpcDecorator​(com.linecorp.armeria.client.DecoratingRpcClientFunction decorator)
      Overrides:
      rpcDecorator in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • addHttpHeader

      public ArmeriaRetrofitBuilder addHttpHeader​(CharSequence name, Object value)
      Overrides:
      addHttpHeader in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • addHttpHeaders

      public ArmeriaRetrofitBuilder addHttpHeaders​(Iterable<? extends Map.Entry<? extends CharSequence,​?>> httpHeaders)
      Overrides:
      addHttpHeaders in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • setHttpHeader

      public ArmeriaRetrofitBuilder setHttpHeader​(CharSequence name, Object value)
      Overrides:
      setHttpHeader in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • setHttpHeaders

      public ArmeriaRetrofitBuilder setHttpHeaders​(Iterable<? extends Map.Entry<? extends CharSequence,​?>> httpHeaders)
      Overrides:
      setHttpHeaders in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • auth

      public ArmeriaRetrofitBuilder auth​(com.linecorp.armeria.common.auth.BasicToken token)
      Overrides:
      auth in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • auth

      public ArmeriaRetrofitBuilder auth​(com.linecorp.armeria.common.auth.OAuth1aToken token)
      Overrides:
      auth in class com.linecorp.armeria.client.AbstractClientOptionsBuilder
    • auth

      public ArmeriaRetrofitBuilder auth​(com.linecorp.armeria.common.auth.OAuth2Token token)
      Overrides:
      auth in class com.linecorp.armeria.client.AbstractClientOptionsBuilder