diff --git a/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceGroupConfigurer.java b/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceGroupConfigurer.java index 2f6834f0df..91392f0719 100644 --- a/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceGroupConfigurer.java +++ b/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceGroupConfigurer.java @@ -64,53 +64,54 @@ public interface HttpServiceGroupConfigurer extends Ordered { Groups filter(Predicate predicate); /** - * Configure the client of each {@link #filter(Predicate) filtered} group. - */ - void forEachClient(ForClient 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 callback); /** - * Configure the client and the {@code HttpServiceProxyFactory} of each + * Configure the {@code HttpServiceProxyFactory} for each * {@link #filter(Predicate) filtered} group. */ - void forEachGroup(ForGroup groupConfigurer); + void forEachProxyFactory(ProxyFactoryCallback callback); + + /** + * Configure the client builder and {@code HttpServiceProxyFactory} for each + * {@link #filter(Predicate) filtered} group. + */ + void forEachGroup(GroupCallback callback); } /** - * Callback to configure the client for a group. + * Callback to configure the client for a given group. * @param the type of client builder, i.e. {@code RestClient} or {@code WebClient} builder. */ @FunctionalInterface - interface ForClient { + interface ClientCallback { - 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 the type of client builder, i.e. {@code RestClient} or {@code WebClient} builder. */ @FunctionalInterface - interface ForGroup { + interface GroupCallback { - void configureGroup(HttpServiceGroup group, + void withGroup(HttpServiceGroup group, CB clientBuilder, HttpServiceProxyFactory.Builder factoryBuilder); } diff --git a/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBean.java b/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBean.java index d25777c23b..18b595df0a 100644 --- a/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBean.java +++ b/spring-web/src/main/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBean.java @@ -194,8 +194,8 @@ public final class HttpServiceProxyRegistryFactoryBean } @SuppressWarnings("unchecked") - public void applyConfigurer(HttpServiceGroupConfigurer.ForGroup configurer) { - configurer.configureGroup(this, (CB) this.clientBuilder, this.proxyFactoryBuilder); + public void applyConfigurer(HttpServiceGroupConfigurer.GroupCallback callback) { + callback.withGroup(this, (CB) this.clientBuilder, this.proxyFactoryBuilder); } public Map, Object> createProxies() { @@ -247,20 +247,18 @@ public final class HttpServiceProxyRegistryFactoryBean } @Override - public void forEachClient(HttpServiceGroupConfigurer.ForClient configurer) { - forEachGroup((group, clientBuilder, factoryBuilder) -> - configurer.configureClient(group, clientBuilder)); + public void forEachClient(HttpServiceGroupConfigurer.ClientCallback 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 configurer) { - this.groups.stream().filter(this.filter).forEach(group -> group.applyConfigurer(configurer)); + public void forEachGroup(HttpServiceGroupConfigurer.GroupCallback callback) { + this.groups.stream().filter(this.filter).forEach(group -> group.applyConfigurer(callback)); this.filter = this.defaultFilter; // reset the filter (terminal method) } } diff --git a/spring-web/src/test/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBeanTests.java b/spring-web/src/test/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBeanTests.java index 775315a2ec..022f89486b 100644 --- a/spring-web/src/test/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBeanTests.java +++ b/spring-web/src/test/java/org/springframework/web/service/registry/HttpServiceProxyRegistryFactoryBeanTests.java @@ -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 { + + @Override + public void withGroup(HttpServiceGroup group, RestClient clientBuilder, HttpServiceProxyFactory.Builder factoryBuilder) { + + } + } + }