All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zalando.riptide.spring.RiptidePostProcessor Maven / Gradle / Ivy

package org.zalando.riptide.spring;

import lombok.SneakyThrows;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.boot.bind.PropertiesConfigurationFactory;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment;

import java.util.function.BiFunction;

import static org.zalando.riptide.spring.Defaulting.withDefaults;

final class RiptidePostProcessor implements BeanDefinitionRegistryPostProcessor, EnvironmentAware {

    private RiptideSettings settings;
    private BiFunction registarFactory;

    RiptidePostProcessor(BiFunction registarFactory) {
        this.registarFactory = registarFactory;
    }

    @Override
    @SneakyThrows
    public void setEnvironment(final Environment env) {
        final ConfigurableEnvironment environment = (ConfigurableEnvironment) env;

        final PropertiesConfigurationFactory factory =
                new PropertiesConfigurationFactory<>(RiptideSettings.class);

        factory.setTargetName("riptide");
        factory.setPropertySources(environment.getPropertySources());
        factory.setConversionService(environment.getConversionService());

        this.settings = factory.getObject();
    }

    @Override
    public void postProcessBeanDefinitionRegistry(final BeanDefinitionRegistry registry) {
        final RiptideRegistrar registrar = registarFactory.apply(new Registry(registry), withDefaults(settings));
        registrar.register();
    }

    @Override
    public void postProcessBeanFactory(final ConfigurableListableBeanFactory beanFactory) throws BeansException {
        // nothing to do
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy