Revise names of callbacks in HttpServiceGroupConfigurer

Closes gh-34926
This commit is contained in:
rstoyanchev
2025-05-28 14:52:39 +01:00
parent ec49435a4d
commit 22c672a469
3 changed files with 36 additions and 28 deletions

View File

@@ -64,53 +64,54 @@ public interface HttpServiceGroupConfigurer<CB> extends Ordered {
Groups<CB> filter(Predicate<HttpServiceGroup> predicate);
/**
* Configure the client of each {@link #filter(Predicate) filtered} group.
*/
void forEachClient(ForClient<CB> configurer);
/**
* Configure the {@code HttpServiceProxyFactory} of each
* Configure the client builder for each
* {@link #filter(Predicate) filtered} group.
*/
void forEachProxyFactory(ForProxyFactory configurer);
void forEachClient(ClientCallback<CB> callback);
/**
* Configure the client and the {@code HttpServiceProxyFactory} of each
* Configure the {@code HttpServiceProxyFactory} for each
* {@link #filter(Predicate) filtered} group.
*/
void forEachGroup(ForGroup<CB> groupConfigurer);
void forEachProxyFactory(ProxyFactoryCallback callback);
/**
* Configure the client builder and {@code HttpServiceProxyFactory} for each
* {@link #filter(Predicate) filtered} group.
*/
void forEachGroup(GroupCallback<CB> callback);
}
/**
* Callback to configure the client for a group.
* Callback to configure the client for a given group.
* @param <CB> the type of client builder, i.e. {@code RestClient} or {@code WebClient} builder.
*/
@FunctionalInterface
interface ForClient<CB> {
interface ClientCallback<CB> {
void configureClient(HttpServiceGroup group, CB clientBuilder);
void withClient(HttpServiceGroup group, CB clientBuilder);
}
/**
* Callback to configure the {@code HttpServiceProxyFactory} for a group.
* Callback to configure the {@code HttpServiceProxyFactory} for a given group.
*/
@FunctionalInterface
interface ForProxyFactory {
interface ProxyFactoryCallback {
void configureProxyFactory(HttpServiceGroup group, HttpServiceProxyFactory.Builder factoryBuilder);
void withProxyFactory(HttpServiceGroup group, HttpServiceProxyFactory.Builder factoryBuilder);
}
/**
* Callback to configure the client and {@code HttpServiceProxyFactory} for a group.
* Callback to configure the client and {@code HttpServiceProxyFactory} for a given group.
* @param <CB> the type of client builder, i.e. {@code RestClient} or {@code WebClient} builder.
*/
@FunctionalInterface
interface ForGroup<CB> {
interface GroupCallback<CB> {
void configureGroup(HttpServiceGroup group,
void withGroup(HttpServiceGroup group,
CB clientBuilder, HttpServiceProxyFactory.Builder factoryBuilder);
}

View File

@@ -194,8 +194,8 @@ public final class HttpServiceProxyRegistryFactoryBean
}
@SuppressWarnings("unchecked")
public <CB> void applyConfigurer(HttpServiceGroupConfigurer.ForGroup<CB> configurer) {
configurer.configureGroup(this, (CB) this.clientBuilder, this.proxyFactoryBuilder);
public <CB> void applyConfigurer(HttpServiceGroupConfigurer.GroupCallback<CB> callback) {
callback.withGroup(this, (CB) this.clientBuilder, this.proxyFactoryBuilder);
}
public Map<Class<?>, Object> createProxies() {
@@ -247,20 +247,18 @@ public final class HttpServiceProxyRegistryFactoryBean
}
@Override
public void forEachClient(HttpServiceGroupConfigurer.ForClient<CB> configurer) {
forEachGroup((group, clientBuilder, factoryBuilder) ->
configurer.configureClient(group, clientBuilder));
public void forEachClient(HttpServiceGroupConfigurer.ClientCallback<CB> callback) {
forEachGroup((group, clientBuilder, factoryBuilder) -> callback.withClient(group, clientBuilder));
}
@Override
public void forEachProxyFactory(HttpServiceGroupConfigurer.ForProxyFactory configurer) {
forEachGroup((group, clientBuilder, factoryBuilder) ->
configurer.configureProxyFactory(group, factoryBuilder));
public void forEachProxyFactory(HttpServiceGroupConfigurer.ProxyFactoryCallback callback) {
forEachGroup((group, clientBuilder, factoryBuilder) -> callback.withProxyFactory(group, factoryBuilder));
}
@Override
public void forEachGroup(HttpServiceGroupConfigurer.ForGroup<CB> configurer) {
this.groups.stream().filter(this.filter).forEach(group -> group.applyConfigurer(configurer));
public void forEachGroup(HttpServiceGroupConfigurer.GroupCallback<CB> callback) {
this.groups.stream().filter(this.filter).forEach(group -> group.applyConfigurer(callback));
this.filter = this.defaultFilter; // reset the filter (terminal method)
}
}

View File

@@ -26,6 +26,7 @@ import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestClient;
import org.springframework.web.client.support.RestClientHttpServiceGroupConfigurer;
import org.springframework.web.service.invoker.HttpServiceProxyFactory;
import org.springframework.web.service.registry.echo.EchoA;
import org.springframework.web.service.registry.echo.EchoB;
import org.springframework.web.service.registry.greeting.GreetingA;
@@ -96,4 +97,12 @@ public class HttpServiceProxyRegistryFactoryBeanTests {
}
}
static class MyC implements HttpServiceGroupConfigurer.GroupCallback<RestClient> {
@Override
public void withGroup(HttpServiceGroup group, RestClient clientBuilder, HttpServiceProxyFactory.Builder factoryBuilder) {
}
}
}