From 87fa9a5acb84d38a1db2b267031472e40fa3c3b4 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Mon, 31 Mar 2025 10:23:31 +0100 Subject: [PATCH] Polishing in GroupsMetadata See gh-33992 --- .../registry/AbstractHttpServiceRegistrar.java | 3 +-- .../web/service/registry/GroupsMetadata.java | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/service/registry/AbstractHttpServiceRegistrar.java b/spring-web/src/main/java/org/springframework/web/service/registry/AbstractHttpServiceRegistrar.java index a7ace07177..ebe6b36c88 100644 --- a/spring-web/src/main/java/org/springframework/web/service/registry/AbstractHttpServiceRegistrar.java +++ b/spring-web/src/main/java/org/springframework/web/service/registry/AbstractHttpServiceRegistrar.java @@ -142,10 +142,9 @@ public abstract class AbstractHttpServiceRegistrar implements mergeGroups(proxyRegistryBeanDef); - this.groupsMetadata.forEachRegistration(group -> group.httpServiceTypeNames().forEach(type -> { + this.groupsMetadata.forEachRegistration((groupName, types) -> types.forEach(type -> { GenericBeanDefinition proxyBeanDef = new GenericBeanDefinition(); proxyBeanDef.setBeanClassName(type); - String groupName = group.name(); String beanName = (groupName + "#" + type); proxyBeanDef.setInstanceSupplier(() -> getProxyInstance(proxyRegistryBeanName, groupName, type)); if (!beanRegistry.containsBeanDefinition(beanName)) { diff --git a/spring-web/src/main/java/org/springframework/web/service/registry/GroupsMetadata.java b/spring-web/src/main/java/org/springframework/web/service/registry/GroupsMetadata.java index 083095e20a..72b3955376 100644 --- a/spring-web/src/main/java/org/springframework/web/service/registry/GroupsMetadata.java +++ b/spring-web/src/main/java/org/springframework/web/service/registry/GroupsMetadata.java @@ -21,7 +21,7 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; -import java.util.function.Consumer; +import java.util.function.BiConsumer; import java.util.stream.Collectors; import org.springframework.util.Assert; @@ -54,16 +54,24 @@ final class GroupsMetadata { * Merge all registrations from the given {@link GroupsMetadata} into this one. */ public void mergeWith(GroupsMetadata other) { - other.forEachRegistration(registration -> + other.groupMap.values().forEach(registration -> getOrCreateGroup(registration.name(), registration.clientType()) .httpServiceTypeNames() .addAll(registration.httpServiceTypeNames())); } - public void forEachRegistration(Consumer consumer) { - this.groupMap.values().forEach(consumer); + /** + * Callback to apply to all registrations with access to the group name and + * its HTTP service type names. + */ + public void forEachRegistration(BiConsumer> consumer) { + this.groupMap.values().forEach(registration -> + consumer.accept(registration.name(), registration.httpServiceTypeNames())); } + /** + * Create the {@link HttpServiceGroup}s for all registrations. + */ public Collection groups() { return this.groupMap.values().stream().map(DefaultRegistration::toHttpServiceGroup).toList(); }