Decouple multi-address and partitioned client builders from HttpClientBuildContext
#2136
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
DefaultMultiAddressHttpClientBuilder
andDefaultPartitionedHttpClientBuilder
useDefaultSingleAddressHttpClientBuilder
as a template for underlyingsingle-address clients. It was helpful before we introduced a
SingleAddressInitializer
in #1387. Before that, all builders had thesame set of methods and it was nice to reuse the single-address builder
instead of maintaining a similar state at higher level builders. Now,
SingleAddressInitializer
helps to avoid duplication between builders.We don't have to use
DefaultSingleAddressHttpClientBuilder
as atemplate and can simplify its state by using a factory for
SingleAddressHttpClientBuilder
.Modifications:
DefaultMultiAddressUrlHttpClientBuilder
andDefaultPartitionedHttpClientBuilder
use a factory forSingleAddressHttpClientBuilder
instead ofDefaultSingleAddressHttpClientBuilder
as a template andHttpExecutionContextBuilder
for context-related items;DefaultSingleAddressHttpClientBuilder
that are not used by other builders anymore;
DefaultMultiAddressUrlHttpClientBuilder
setsexecution context items for underlying single-address builders;
Result:
DefaultSingleAddressHttpClientBuilder
has less pkg-private API,DefaultMultiAddressUrlHttpClientBuilder
andDefaultPartitionedHttpClientBuilder
create a new single-addressbuilder on demand, similar to grpc builders.