Class ArmeriaRetrofitBuilder
public final class ArmeriaRetrofitBuilder
extends com.linecorp.armeria.client.AbstractClientOptionsBuilder
Retrofit
which uses WebClient
for sending requests.- See Also:
ArmeriaRetrofit
-
Method Summary
Modifier and Type Method Description ArmeriaRetrofitBuilder
addCallAdapterFactory(CallAdapter.Factory factory)
Adds the specified call adapter factory for supporting service method return types other thanCall
.ArmeriaRetrofitBuilder
addConverterFactory(Converter.Factory factory)
Adds the specified converter factory for serialization and deserialization of objects.ArmeriaRetrofitBuilder
addHttpHeader(CharSequence name, Object value)
ArmeriaRetrofitBuilder
addHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)
Retrofit
build()
Returns a newly-createdRetrofit
based on the properties of this builder.ArmeriaRetrofitBuilder
callbackExecutor(Executor executor)
ArmeriaRetrofitBuilder
decorator(com.linecorp.armeria.client.DecoratingHttpClientFunction decorator)
ArmeriaRetrofitBuilder
decorator(Function<? super com.linecorp.armeria.client.HttpClient,? extends com.linecorp.armeria.client.HttpClient> decorator)
ArmeriaRetrofitBuilder
endpointRemapper(Function<? super com.linecorp.armeria.client.Endpoint,? extends com.linecorp.armeria.client.endpoint.EndpointGroup> endpointRemapper)
ArmeriaRetrofitBuilder
factory(com.linecorp.armeria.client.ClientFactory factory)
ArmeriaRetrofitBuilder
maxResponseLength(long maxResponseLength)
ArmeriaRetrofitBuilder
nonBaseClientFactory(BiFunction<? super com.linecorp.armeria.common.SessionProtocol,? super com.linecorp.armeria.client.Endpoint,? extends com.linecorp.armeria.client.WebClient> nonBaseClientFactory)
Specifies theBiFunction
that creates a new non-baseWebClient
, which is used for sending requests to other authorities than that of base URL.<T> ArmeriaRetrofitBuilder
option(com.linecorp.armeria.client.ClientOption<T> option, T value)
<T> ArmeriaRetrofitBuilder
option(com.linecorp.armeria.client.ClientOptionValue<T> optionValue)
ArmeriaRetrofitBuilder
options(com.linecorp.armeria.client.ClientOptions options)
ArmeriaRetrofitBuilder
options(com.linecorp.armeria.client.ClientOptionValue<?>... options)
ArmeriaRetrofitBuilder
options(Iterable<com.linecorp.armeria.client.ClientOptionValue<?>> options)
ArmeriaRetrofitBuilder
requestIdGenerator(Supplier<com.linecorp.armeria.common.RequestId> requestIdGenerator)
ArmeriaRetrofitBuilder
responseTimeout(Duration responseTimeout)
ArmeriaRetrofitBuilder
responseTimeoutMillis(long responseTimeoutMillis)
ArmeriaRetrofitBuilder
rpcDecorator(com.linecorp.armeria.client.DecoratingRpcClientFunction decorator)
ArmeriaRetrofitBuilder
rpcDecorator(Function<? super com.linecorp.armeria.client.RpcClient,? extends com.linecorp.armeria.client.RpcClient> decorator)
ArmeriaRetrofitBuilder
setHttpHeader(CharSequence name, Object value)
ArmeriaRetrofitBuilder
setHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)
ArmeriaRetrofitBuilder
streaming(boolean streaming)
Sets the streaming flag to make Armeria client fully supportStreaming
.ArmeriaRetrofitBuilder
validateEagerly(boolean validateEagerly)
When callingRetrofit.create(java.lang.Class<T>)
on the resultingRetrofit
instance, eagerly validate the configuration of all methods in the supplied interface.ArmeriaRetrofitBuilder
writeTimeout(Duration writeTimeout)
ArmeriaRetrofitBuilder
writeTimeoutMillis(long writeTimeoutMillis)
-
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 theBiFunction
that creates a new non-baseWebClient
, which is used for sending requests to other authorities than that of base URL. If not specified, the non-baseWebClient
will have the same options with the baseWebClient
, which was specified withArmeriaRetrofit.of(WebClient)
orArmeriaRetrofit.builder(WebClient)
.To avoid the overhead of repetitive instantiation of
WebClient
s, theWebClient
s returned by the specifiedBiFunction
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 defaultWebClient
specified withArmeriaRetrofit.of(WebClient)
orArmeriaRetrofit.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
Adds the specified converter factory for serialization and deserialization of objects. -
addCallAdapterFactory
Adds the specified call adapter factory for supporting service method return types other thanCall
. -
callbackExecutor
Sets theExecutor
on whichCallback
methods are invoked when returningCall
from your service method.Note:
executor
is not used forcustom method return types
. -
streaming
Sets the streaming flag to make Armeria client fully supportStreaming
. If this flag isfalse
, Armeria client will buffer all data and call a callback after receiving the data completely, even if a service method was annotated withStreaming
. By enabling this flag, Armeria client will use theExecutor
specified withcallbackExecutor(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
When callingRetrofit.create(java.lang.Class<T>)
on the resultingRetrofit
instance, eagerly validate the configuration of all methods in the supplied interface. -
build
Returns a newly-createdRetrofit
based on the properties of this builder. -
options
- Overrides:
options
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
options
- Overrides:
options
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
options
public ArmeriaRetrofitBuilder options(Iterable<com.linecorp.armeria.client.ClientOptionValue<?>> options)- Overrides:
options
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
option
public <T> ArmeriaRetrofitBuilder option(com.linecorp.armeria.client.ClientOption<T> option, T value)- Overrides:
option
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
option
public <T> ArmeriaRetrofitBuilder option(com.linecorp.armeria.client.ClientOptionValue<T> optionValue)- Overrides:
option
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
factory
- Overrides:
factory
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
writeTimeout
- Overrides:
writeTimeout
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
writeTimeoutMillis
- Overrides:
writeTimeoutMillis
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
responseTimeout
- Overrides:
responseTimeout
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
responseTimeoutMillis
- Overrides:
responseTimeoutMillis
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
maxResponseLength
- Overrides:
maxResponseLength
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
requestIdGenerator
public ArmeriaRetrofitBuilder requestIdGenerator(Supplier<com.linecorp.armeria.common.RequestId> requestIdGenerator)- Overrides:
requestIdGenerator
in classcom.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 classcom.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 classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
decorator
public ArmeriaRetrofitBuilder decorator(com.linecorp.armeria.client.DecoratingHttpClientFunction decorator)- Overrides:
decorator
in classcom.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 classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
rpcDecorator
public ArmeriaRetrofitBuilder rpcDecorator(com.linecorp.armeria.client.DecoratingRpcClientFunction decorator)- Overrides:
rpcDecorator
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
addHttpHeader
- Overrides:
addHttpHeader
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
addHttpHeaders
public ArmeriaRetrofitBuilder addHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)- Overrides:
addHttpHeaders
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
setHttpHeader
- Overrides:
setHttpHeader
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
setHttpHeaders
public ArmeriaRetrofitBuilder setHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)- Overrides:
setHttpHeaders
in classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-