Class ArmeriaRetrofitBuilder
Retrofit which uses WebClient for sending requests.- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionaddCallAdapterFactory(CallAdapter.Factory factory) Adds the specified call adapter factory for supporting service method return types other thanCall.addConverterFactory(Converter.Factory factory) Adds the specified converter factory for serialization and deserialization of objects.addHeader(CharSequence name, Object value) addHeaders(Iterable<? extends Map.Entry<? extends CharSequence, ?>> headers) auth(com.linecorp.armeria.common.auth.AuthToken token) auth(com.linecorp.armeria.common.auth.BasicToken token) auth(com.linecorp.armeria.common.auth.OAuth1aToken token) auth(com.linecorp.armeria.common.auth.OAuth2Token token) build()Returns a newly-createdRetrofitbased on the properties of this builder.callbackExecutor(Executor executor) contextCustomizer(Consumer<? super com.linecorp.armeria.client.ClientRequestContext> contextCustomizer) decorator(com.linecorp.armeria.client.DecoratingHttpClientFunction decorator) decorator(Function<? super com.linecorp.armeria.client.HttpClient, ? extends com.linecorp.armeria.client.HttpClient> decorator) endpointRemapper(Function<? super com.linecorp.armeria.client.Endpoint, ? extends com.linecorp.armeria.client.endpoint.EndpointGroup> endpointRemapper) factory(com.linecorp.armeria.client.ClientFactory factory) followRedirects(com.linecorp.armeria.client.redirect.RedirectConfig redirectConfig) maxResponseLength(long maxResponseLength) nonBaseClientFactory(BiFunction<? super com.linecorp.armeria.common.SessionProtocol, ? super com.linecorp.armeria.client.Endpoint, ? extends com.linecorp.armeria.client.WebClient> nonBaseClientFactory) Specifies theBiFunctionthat creates a new non-baseWebClient, which is used for sending requests to other authorities than that of base URL.option(com.linecorp.armeria.client.ClientOption<T> option, T value) option(com.linecorp.armeria.client.ClientOptionValue<T> optionValue) options(com.linecorp.armeria.client.ClientOptions options) options(com.linecorp.armeria.client.ClientOptionValue<?>... options) requestIdGenerator(Supplier<com.linecorp.armeria.common.RequestId> requestIdGenerator) responseTimeout(Duration responseTimeout) responseTimeoutMillis(long responseTimeoutMillis) rpcDecorator(com.linecorp.armeria.client.DecoratingRpcClientFunction decorator) Raises anUnsupportedOperationExceptionbecause this builder doesn't support RPC-level but only HTTP-level decorators.rpcDecorator(Function<? super com.linecorp.armeria.client.RpcClient, ? extends com.linecorp.armeria.client.RpcClient> decorator) Raises anUnsupportedOperationExceptionbecause this builder doesn't support RPC-level but only HTTP-level decorators.setHeader(CharSequence name, Object value) setHeaders(Iterable<? extends Map.Entry<? extends CharSequence, ?>> headers) streaming(boolean streaming) Sets the streaming flag to make Armeria client fully supportStreaming.successFunction(com.linecorp.armeria.common.SuccessFunction successFunction) validateEagerly(boolean validateEagerly) When callingRetrofit.create(java.lang.Class<T>)on the resultingRetrofitinstance, eagerly validate the configuration of all methods in the supplied interface.writeTimeout(Duration writeTimeout) writeTimeoutMillis(long writeTimeoutMillis) Methods inherited from class com.linecorp.armeria.client.AbstractClientOptionsBuilder
buildOptions, buildOptions
-
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 theBiFunctionthat creates a new non-baseWebClient, which is used for sending requests to other authorities than that of base URL. If not specified, the non-baseWebClientwill have the same options with the baseWebClient, which was specified withArmeriaRetrofit.of(WebClient)orArmeriaRetrofit.builder(WebClient).To avoid the overhead of repetitive instantiation of
WebClients, theWebClients returned by the specifiedBiFunctionwill 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. .setHeader(HttpHeaderNames.AUTHORIZATION, "bearer my-access-token") // Override the timeout. .responseTimeout(Duration.ofSeconds(30)) .build(); }) .build();Note that the specified
BiFunctionis not used for sending requests to the base URL's authority. The defaultWebClientspecified 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/") .setHeader(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 theExecutoron whichCallbackmethods are invoked when returningCallfrom your service method.Note:
executoris 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 theExecutorspecified 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
Streamingannotation in the same interface. Consider separating them into different interfaces and using different builder to build the service.- See Also:
-
validateEagerly
When callingRetrofit.create(java.lang.Class<T>)on the resultingRetrofitinstance, eagerly validate the configuration of all methods in the supplied interface. -
build
Returns a newly-createdRetrofitbased on the properties of this builder. -
options
- Overrides:
optionsin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
options
- Overrides:
optionsin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
options
public ArmeriaRetrofitBuilder options(Iterable<com.linecorp.armeria.client.ClientOptionValue<?>> options) - Overrides:
optionsin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
option
public <T> ArmeriaRetrofitBuilder option(com.linecorp.armeria.client.ClientOption<T> option, T value) - Overrides:
optionin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
option
public <T> ArmeriaRetrofitBuilder option(com.linecorp.armeria.client.ClientOptionValue<T> optionValue) - Overrides:
optionin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
factory
- Overrides:
factoryin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
writeTimeout
- Overrides:
writeTimeoutin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
writeTimeoutMillis
- Overrides:
writeTimeoutMillisin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
responseTimeout
- Overrides:
responseTimeoutin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
responseTimeoutMillis
- Overrides:
responseTimeoutMillisin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
maxResponseLength
- Overrides:
maxResponseLengthin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
requestIdGenerator
public ArmeriaRetrofitBuilder requestIdGenerator(Supplier<com.linecorp.armeria.common.RequestId> requestIdGenerator) - Overrides:
requestIdGeneratorin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
successFunction
public ArmeriaRetrofitBuilder successFunction(com.linecorp.armeria.common.SuccessFunction successFunction) - Overrides:
successFunctionin 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:
endpointRemapperin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
decorator
public ArmeriaRetrofitBuilder decorator(Function<? super com.linecorp.armeria.client.HttpClient, ? extends com.linecorp.armeria.client.HttpClient> decorator) - Overrides:
decoratorin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
decorator
public ArmeriaRetrofitBuilder decorator(com.linecorp.armeria.client.DecoratingHttpClientFunction decorator) - Overrides:
decoratorin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
clearDecorators
- Overrides:
clearDecoratorsin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
rpcDecorator
public ArmeriaRetrofitBuilder rpcDecorator(Function<? super com.linecorp.armeria.client.RpcClient, ? extends com.linecorp.armeria.client.RpcClient> decorator) Raises anUnsupportedOperationExceptionbecause this builder doesn't support RPC-level but only HTTP-level decorators.- Overrides:
rpcDecoratorin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
rpcDecorator
public ArmeriaRetrofitBuilder rpcDecorator(com.linecorp.armeria.client.DecoratingRpcClientFunction decorator) Raises anUnsupportedOperationExceptionbecause this builder doesn't support RPC-level but only HTTP-level decorators.- Overrides:
rpcDecoratorin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
addHeader
- Overrides:
addHeaderin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
addHeaders
public ArmeriaRetrofitBuilder addHeaders(Iterable<? extends Map.Entry<? extends CharSequence, ?>> headers) - Overrides:
addHeadersin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
setHeader
- Overrides:
setHeaderin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
setHeaders
public ArmeriaRetrofitBuilder setHeaders(Iterable<? extends Map.Entry<? extends CharSequence, ?>> headers) - Overrides:
setHeadersin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
auth
- Overrides:
authin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
auth
- Overrides:
authin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
auth
- Overrides:
authin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
auth
- Overrides:
authin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
followRedirects
- Overrides:
followRedirectsin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
followRedirects
public ArmeriaRetrofitBuilder followRedirects(com.linecorp.armeria.client.redirect.RedirectConfig redirectConfig) - Overrides:
followRedirectsin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-
contextCustomizer
public ArmeriaRetrofitBuilder contextCustomizer(Consumer<? super com.linecorp.armeria.client.ClientRequestContext> contextCustomizer) - Overrides:
contextCustomizerin classcom.linecorp.armeria.client.AbstractClientOptionsBuilder
-