Example usage for org.springframework.beans.factory.support RootBeanDefinition getAttribute

List of usage examples for org.springframework.beans.factory.support RootBeanDefinition getAttribute

Introduction

In this page you can find the example usage for org.springframework.beans.factory.support RootBeanDefinition getAttribute.

Prototype

@Override
    @Nullable
    public Object getAttribute(String name) 

Source Link

Usage

From source file:org.metaeffekt.dcc.commons.spring.xml.DCCConfigurationBeanDefinitionParser.java

private void registerProfileFactoryBeanIfRequired(String profileId, String deploymentId, String profileType,
        String profileDescription, File origin, BeanDefinitionRegistry registry, String solutionPropertiesPath,
        String deploymentPropertiesPath, ParserContext parserContext) {
    if (!registry.containsBeanDefinition(THE_ONE_TRUE_PROFILE_BEAN_NAME)) {
        BeanDefinitionBuilder profileFactoryBuilder = BeanDefinitionBuilder
                .rootBeanDefinition(ProfileFactoryBean.class);
        profileFactoryBuilder.addConstructorArgValue(Id.createProfileId(profileId));
        profileFactoryBuilder.addConstructorArgValue(Id.createDeploymentId(deploymentId));
        profileFactoryBuilder.addConstructorArgValue(profileType);
        profileFactoryBuilder.addConstructorArgValue(profileDescription);
        profileFactoryBuilder.addConstructorArgValue(origin);
        profileFactoryBuilder.addPropertyValue(PROPERTY_SOLUTION_PROPERTIES_PATH, solutionPropertiesPath);
        profileFactoryBuilder.addPropertyValue(PROPERTY_DEPLOYMENT_PROPERTIES_PATH, deploymentPropertiesPath);

        final ResourceLoader resourceLoader = parserContext.getReaderContext().getResourceLoader();
        if (resourceLoader instanceof ProfileApplicationContext) {
            File solutionDir = ((ProfileApplicationContext) resourceLoader).getSolutionDir();
            profileFactoryBuilder.addPropertyValue(PROPERTY_SOLUTION_DIR, solutionDir);
        }//from  w w  w. j a  v a 2 s . co m

        registry.registerBeanDefinition(THE_ONE_TRUE_PROFILE_BEAN_NAME,
                profileFactoryBuilder.getBeanDefinition());

        RootBeanDefinition factoryBean = (RootBeanDefinition) registry
                .getBeanDefinition(THE_ONE_TRUE_PROFILE_BEAN_NAME);
        factoryBean.setAttribute("builder", profileFactoryBuilder);
    } else {
        RootBeanDefinition factoryBean = (RootBeanDefinition) registry
                .getBeanDefinition(THE_ONE_TRUE_PROFILE_BEAN_NAME);
        BeanDefinitionBuilder builder = (BeanDefinitionBuilder) factoryBean.getAttribute("builder");
        if (solutionPropertiesPath != null) {
            builder.addPropertyValue(PROPERTY_SOLUTION_PROPERTIES_PATH, solutionPropertiesPath);
        }
        if (deploymentPropertiesPath != null) {
            builder.addPropertyValue(PROPERTY_DEPLOYMENT_PROPERTIES_PATH, deploymentPropertiesPath);
        }
    }
}