DockerComposeServiceConnectionsApplicationListener Class — spring-boot Architecture
Architecture documentation for the DockerComposeServiceConnectionsApplicationListener class in DockerComposeServiceConnectionsApplicationListener.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/DockerComposeServiceConnectionsApplicationListener.java lines 46–101
class DockerComposeServiceConnectionsApplicationListener
implements ApplicationListener<DockerComposeServicesReadyEvent> {
private final ConnectionDetailsFactories factories;
DockerComposeServiceConnectionsApplicationListener() {
this(new ConnectionDetailsFactories(null));
}
DockerComposeServiceConnectionsApplicationListener(ConnectionDetailsFactories factories) {
this.factories = factories;
}
@Override
public void onApplicationEvent(DockerComposeServicesReadyEvent event) {
ApplicationContext applicationContext = event.getSource();
if (applicationContext instanceof BeanDefinitionRegistry registry) {
Environment environment = applicationContext.getEnvironment();
registerConnectionDetails(registry, environment, event.getRunningServices());
}
}
private void registerConnectionDetails(BeanDefinitionRegistry registry, Environment environment,
List<RunningService> runningServices) {
for (RunningService runningService : runningServices) {
DockerComposeConnectionSource source = new DockerComposeConnectionSource(runningService, environment);
this.factories.getConnectionDetails(source, false).forEach((connectionDetailsType, connectionDetails) -> {
register(registry, runningService, connectionDetailsType, connectionDetails);
this.factories.getConnectionDetails(connectionDetails, false)
.forEach((adaptedType, adaptedDetails) -> register(registry, runningService, adaptedType,
adaptedDetails));
});
}
}
@SuppressWarnings("unchecked")
private <T> void register(BeanDefinitionRegistry registry, RunningService runningService,
Class<?> connectionDetailsType, ConnectionDetails connectionDetails) {
ContainerImageMetadata containerMetadata = new ContainerImageMetadata(runningService.image().toString());
String beanName = getBeanName(runningService, connectionDetailsType);
Class<T> beanType = (Class<T>) connectionDetails.getClass();
Supplier<T> beanSupplier = () -> (T) connectionDetails;
RootBeanDefinition beanDefinition = new RootBeanDefinition(beanType, beanSupplier);
containerMetadata.addTo(beanDefinition);
registry.registerBeanDefinition(beanName, beanDefinition);
}
private String getBeanName(RunningService runningService, Class<?> connectionDetailsType) {
List<String> parts = new ArrayList<>();
parts.add(ClassUtils.getShortNameAsProperty(connectionDetailsType));
parts.add("for");
parts.addAll(Arrays.asList(runningService.name().split("-")));
return StringUtils.uncapitalize(parts.stream().map(StringUtils::capitalize).collect(Collectors.joining()));
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free