Class ArmeriaRetrofitBuilder
public final class ArmeriaRetrofitBuilder extends AbstractClientOptionsBuilder
- 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)
Adds the specified HTTP header.ArmeriaRetrofitBuilder
addHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)
Adds the specified HTTP headers.ArmeriaRetrofitBuilder
auth(BasicToken token)
Sets the HTTP basic access authentication header usingHttpHeaderNames.AUTHORIZATION
.ArmeriaRetrofitBuilder
auth(OAuth1aToken token)
Sets the OAuth Core 1.0 Revision A header usingHttpHeaderNames.AUTHORIZATION
.ArmeriaRetrofitBuilder
auth(OAuth2Token token)
Sets the OAuth 2.0 header usingHttpHeaderNames.AUTHORIZATION
.Retrofit
build()
Returns a newly-createdRetrofit
based on the properties of this builder.ArmeriaRetrofitBuilder
callbackExecutor(Executor executor)
ArmeriaRetrofitBuilder
decorator(DecoratingHttpClientFunction decorator)
Adds the specified HTTP-leveldecorator
.ArmeriaRetrofitBuilder
decorator(Function<? super HttpClient,? extends HttpClient> decorator)
Adds the specified HTTP-leveldecorator
.ArmeriaRetrofitBuilder
endpointRemapper(Function<? super Endpoint,? extends EndpointGroup> endpointRemapper)
ArmeriaRetrofitBuilder
factory(ClientFactory factory)
Sets theClientFactory
used for creating a client.ArmeriaRetrofitBuilder
maxResponseLength(long maxResponseLength)
Sets the maximum allowed length of a server response in bytes.ArmeriaRetrofitBuilder
nonBaseClientFactory(BiFunction<? super SessionProtocol,? super Endpoint,? extends 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(ClientOption<T> option, T value)
Adds the specifiedClientOption
and itsvalue
.<T> ArmeriaRetrofitBuilder
option(ClientOptionValue<T> optionValue)
Adds the specifiedClientOptionValue
.ArmeriaRetrofitBuilder
options(ClientOptions options)
Adds the specifiedClientOptions
.ArmeriaRetrofitBuilder
options(ClientOptionValue<?>... options)
Adds the specifiedClientOptionValue
s.ArmeriaRetrofitBuilder
options(Iterable<ClientOptionValue<?>> options)
Adds the specifiedClientOptionValue
s.ArmeriaRetrofitBuilder
requestIdGenerator(Supplier<RequestId> requestIdGenerator)
ArmeriaRetrofitBuilder
responseTimeout(Duration responseTimeout)
Sets the timeout of a response.ArmeriaRetrofitBuilder
responseTimeoutMillis(long responseTimeoutMillis)
Sets the timeout of a response in milliseconds.ArmeriaRetrofitBuilder
rpcDecorator(DecoratingRpcClientFunction decorator)
Adds the specified RPC-leveldecorator
.ArmeriaRetrofitBuilder
rpcDecorator(Function<? super RpcClient,? extends RpcClient> decorator)
Adds the specified RPC-leveldecorator
.ArmeriaRetrofitBuilder
setHttpHeader(CharSequence name, Object value)
Sets the specified HTTP header.ArmeriaRetrofitBuilder
setHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)
Sets the specified HTTP headers.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)
Sets the timeout of a socket write attempt.ArmeriaRetrofitBuilder
writeTimeoutMillis(long writeTimeoutMillis)
Sets the timeout of a socket write attempt in milliseconds.Methods inherited from class com.linecorp.armeria.client.AbstractClientOptionsBuilder
buildOptions, buildOptions
-
Method Details
-
nonBaseClientFactory
public ArmeriaRetrofitBuilder nonBaseClientFactory(BiFunction<? super SessionProtocol,? super Endpoint,? extends 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
Description copied from class:AbstractClientOptionsBuilder
Adds the specifiedClientOptions
.- Overrides:
options
in classAbstractClientOptionsBuilder
-
options
Description copied from class:AbstractClientOptionsBuilder
Adds the specifiedClientOptionValue
s.- Overrides:
options
in classAbstractClientOptionsBuilder
-
options
Description copied from class:AbstractClientOptionsBuilder
Adds the specifiedClientOptionValue
s.- Overrides:
options
in classAbstractClientOptionsBuilder
-
option
Description copied from class:AbstractClientOptionsBuilder
Adds the specifiedClientOption
and itsvalue
.- Overrides:
option
in classAbstractClientOptionsBuilder
-
option
Description copied from class:AbstractClientOptionsBuilder
Adds the specifiedClientOptionValue
.- Overrides:
option
in classAbstractClientOptionsBuilder
-
factory
Description copied from class:AbstractClientOptionsBuilder
Sets theClientFactory
used for creating a client. The default isClientFactory.ofDefault()
.- Overrides:
factory
in classAbstractClientOptionsBuilder
-
writeTimeout
Description copied from class:AbstractClientOptionsBuilder
Sets the timeout of a socket write attempt.- Overrides:
writeTimeout
in classAbstractClientOptionsBuilder
- Parameters:
writeTimeout
- the timeout.0
disables the timeout.
-
writeTimeoutMillis
Description copied from class:AbstractClientOptionsBuilder
Sets the timeout of a socket write attempt in milliseconds.- Overrides:
writeTimeoutMillis
in classAbstractClientOptionsBuilder
- Parameters:
writeTimeoutMillis
- the timeout in milliseconds.0
disables the timeout.
-
responseTimeout
Description copied from class:AbstractClientOptionsBuilder
Sets the timeout of a response.- Overrides:
responseTimeout
in classAbstractClientOptionsBuilder
- Parameters:
responseTimeout
- the timeout.0
disables the timeout.
-
responseTimeoutMillis
Description copied from class:AbstractClientOptionsBuilder
Sets the timeout of a response in milliseconds.- Overrides:
responseTimeoutMillis
in classAbstractClientOptionsBuilder
- Parameters:
responseTimeoutMillis
- the timeout in milliseconds.0
disables the timeout.
-
maxResponseLength
Description copied from class:AbstractClientOptionsBuilder
Sets the maximum allowed length of a server response in bytes.- Overrides:
maxResponseLength
in classAbstractClientOptionsBuilder
- Parameters:
maxResponseLength
- the maximum length in bytes.0
disables the limit.
-
requestIdGenerator
Description copied from class:AbstractClientOptionsBuilder
- Overrides:
requestIdGenerator
in classAbstractClientOptionsBuilder
-
endpointRemapper
public ArmeriaRetrofitBuilder endpointRemapper(Function<? super Endpoint,? extends EndpointGroup> endpointRemapper)Description copied from class:AbstractClientOptionsBuilder
Sets aFunction
that remaps anEndpoint
into anEndpointGroup
. ThisClientOption
is useful when you need to override a single target host into a group of hosts to enable client-side load-balancing, e.g.MyService.Iface client = Clients.newClient("tbinary+http://example.com/api", MyService.Iface.class); EndpointGroup myGroup = EndpointGroup.of(Endpoint.of("node-1.example.com")), Endpoint.of("node-2.example.com"))); MyService.Iface derivedClient = Clients.newDerivedClient(client, options -> { return options.toBuilder() .endpointRemapper(endpoint -> { if (endpoint.host().equals("example.com")) { return myGroup; } else { return endpoint; } }) .build(); }); // This request goes to 'node-1.example.com' or 'node-2.example.com'. derivedClient.call();
Note that the remapping does not occur recursively but only once.
- Overrides:
endpointRemapper
in classAbstractClientOptionsBuilder
- See Also:
ClientOption.ENDPOINT_REMAPPER
,ClientOptions.endpointRemapper()
-
decorator
public ArmeriaRetrofitBuilder decorator(Function<? super HttpClient,? extends HttpClient> decorator)Description copied from class:AbstractClientOptionsBuilder
Adds the specified HTTP-leveldecorator
.- Overrides:
decorator
in classAbstractClientOptionsBuilder
- Parameters:
decorator
- theFunction
that transforms anHttpClient
to another
-
decorator
Description copied from class:AbstractClientOptionsBuilder
Adds the specified HTTP-leveldecorator
.- Overrides:
decorator
in classAbstractClientOptionsBuilder
- Parameters:
decorator
- theDecoratingHttpClientFunction
that intercepts an invocation
-
rpcDecorator
public ArmeriaRetrofitBuilder rpcDecorator(Function<? super RpcClient,? extends RpcClient> decorator)Description copied from class:AbstractClientOptionsBuilder
Adds the specified RPC-leveldecorator
.- Overrides:
rpcDecorator
in classAbstractClientOptionsBuilder
- Parameters:
decorator
- theFunction
that transforms anRpcClient
to another
-
rpcDecorator
Description copied from class:AbstractClientOptionsBuilder
Adds the specified RPC-leveldecorator
.- Overrides:
rpcDecorator
in classAbstractClientOptionsBuilder
- Parameters:
decorator
- theDecoratingRpcClientFunction
that intercepts an invocation
-
addHttpHeader
Description copied from class:AbstractClientOptionsBuilder
Adds the specified HTTP header.- Overrides:
addHttpHeader
in classAbstractClientOptionsBuilder
-
addHttpHeaders
public ArmeriaRetrofitBuilder addHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)Description copied from class:AbstractClientOptionsBuilder
Adds the specified HTTP headers.- Overrides:
addHttpHeaders
in classAbstractClientOptionsBuilder
-
setHttpHeader
Description copied from class:AbstractClientOptionsBuilder
Sets the specified HTTP header.- Overrides:
setHttpHeader
in classAbstractClientOptionsBuilder
-
setHttpHeaders
public ArmeriaRetrofitBuilder setHttpHeaders(Iterable<? extends Map.Entry<? extends CharSequence,?>> httpHeaders)Description copied from class:AbstractClientOptionsBuilder
Sets the specified HTTP headers.- Overrides:
setHttpHeaders
in classAbstractClientOptionsBuilder
-
auth
Description copied from class:AbstractClientOptionsBuilder
Sets the HTTP basic access authentication header usingHttpHeaderNames.AUTHORIZATION
.- Overrides:
auth
in classAbstractClientOptionsBuilder
-
auth
Description copied from class:AbstractClientOptionsBuilder
Sets the OAuth Core 1.0 Revision A header usingHttpHeaderNames.AUTHORIZATION
.- Overrides:
auth
in classAbstractClientOptionsBuilder
-
auth
Description copied from class:AbstractClientOptionsBuilder
Sets the OAuth 2.0 header usingHttpHeaderNames.AUTHORIZATION
.- Overrides:
auth
in classAbstractClientOptionsBuilder
-