Replace Map argument with GroupsMetadata

In preparation for HTTP Service registry AOT support.

See gh-33992
This commit is contained in:
rstoyanchev
2025-03-31 10:11:07 +00:00
parent 1c0bcba587
commit 302f04ecf3
5 changed files with 211 additions and 147 deletions

View File

@@ -19,6 +19,8 @@ package org.springframework.web.service.registry;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
@@ -98,6 +100,17 @@ public class HttpServiceRegistrarTests {
registry -> registry.forGroup(ECHO_GROUP, ClientType.WEB_CLIENT).register(EchoB.class)));
}
@Test
void mergeWithClientTypeOverride() {
doRegister(
registry -> registry.forGroup(ECHO_GROUP).register(EchoA.class),
registry -> registry.forGroup(ECHO_GROUP, ClientType.WEB_CLIENT).register(EchoA.class));
assertRegistryBeanDef(new TestGroup(ECHO_GROUP, ClientType.WEB_CLIENT, EchoA.class));
assertProxyBeanDef(ECHO_GROUP, EchoA.class);
assertBeanDefinitionCount(2);
}
@Test
void defaultClientType() {
doRegister(ClientType.WEB_CLIENT, registry -> registry.forGroup(ECHO_GROUP).register(EchoA.class));
@@ -135,7 +148,6 @@ public class HttpServiceRegistrarTests {
}
}
@SuppressWarnings("unchecked")
private Map<String, HttpServiceGroup> groupMap() {
BeanDefinition beanDef = this.beanDefRegistry.getBeanDefinition("httpServiceProxyRegistry");
assertThat(beanDef.getBeanClassName()).isEqualTo(HttpServiceProxyRegistryFactoryBean.class.getName());
@@ -144,10 +156,11 @@ public class HttpServiceRegistrarTests {
ConstructorArgumentValues.ValueHolder valueHolder = args.getArgumentValue(0, Map.class);
assertThat(valueHolder).isNotNull();
Map<String, HttpServiceGroup> groupMap = (Map<String, HttpServiceGroup>) valueHolder.getValue();
assertThat(groupMap).isNotNull();
GroupsMetadata metadata = (GroupsMetadata) valueHolder.getValue();
assertThat(metadata).isNotNull();
return groupMap;
return metadata.groups().stream()
.collect(Collectors.toMap(HttpServiceGroup::name, Function.identity()));
}
private void assertProxyBeanDef(String group, Class<?> httpServiceType) {