Example usage for org.springframework.beans.factory.config ConfigurableListableBeanFactory containsSingleton

List of usage examples for org.springframework.beans.factory.config ConfigurableListableBeanFactory containsSingleton

Introduction

In this page you can find the example usage for org.springframework.beans.factory.config ConfigurableListableBeanFactory containsSingleton.

Prototype

boolean containsSingleton(String beanName);

Source Link

Document

Check if this registry contains a singleton instance with the given name.

Usage

From source file:lodsve.core.condition.ConditionEvaluationReport.java

/**
 * Obtain a {@link ConditionEvaluationReport} for the specified bean factory.
 *
 * @param beanFactory the bean factory/*from  ww w.j  av a 2  s  .  c  om*/
 * @return an existing or new {@link ConditionEvaluationReport}
 */
public static ConditionEvaluationReport get(ConfigurableListableBeanFactory beanFactory) {
    synchronized (beanFactory) {
        ConditionEvaluationReport report;
        if (beanFactory.containsSingleton(BEAN_NAME)) {
            report = beanFactory.getBean(BEAN_NAME, ConditionEvaluationReport.class);
        } else {
            report = new ConditionEvaluationReport();
            beanFactory.registerSingleton(BEAN_NAME, report);
        }
        locateParent(beanFactory.getParentBeanFactory(), report);
        return report;
    }
}

From source file:com.gwtplatform.dispatch.server.spring.utils.SpringUtils.java

private static String generateName(ConfigurableListableBeanFactory registry, RootBeanDefinition definition) {
    String generatedBeanName = definition.getBeanClassName();
    if (generatedBeanName == null) {
        if (definition.getParentName() != null) {
            generatedBeanName = definition.getParentName() + "$child";
        } else if (definition.getFactoryBeanName() != null) {
            generatedBeanName = definition.getFactoryBeanName() + "$created";
        }//ww w  .  ja va2 s. c  o  m
    }
    if (!StringUtils.hasText(generatedBeanName)) {
        throw new BeanDefinitionStoreException("Unnamed bean definition specifies neither "
                + "'class' nor 'parent' nor 'factory-bean' - can't generate bean name");
    }

    String id = generatedBeanName;

    // Top-level bean: use plain class name.
    // Increase counter until the id is unique.
    int counter = -1;
    while (counter == -1 || (registry.containsSingleton(id))) {
        counter++;
        id = generatedBeanName + "#" + counter;
    }

    return id;
}

From source file:com.gwtplatform.dispatch.rpc.server.spring.utils.SpringUtils.java

private static String generateName(ConfigurableListableBeanFactory registry, RootBeanDefinition definition) {
    String generatedBeanName = definition.getBeanClassName();
    if (generatedBeanName == null) {
        if (definition.getParentName() != null) {
            generatedBeanName = definition.getParentName() + "$child";
        } else if (definition.getFactoryBeanName() != null) {
            generatedBeanName = definition.getFactoryBeanName() + "$created";
        }/*from   ww w . ja va2s  .co  m*/
    }
    if (!StringUtils.hasText(generatedBeanName)) {
        throw new BeanDefinitionStoreException(
                "Unnamed bean definition specifies neither 'class' nor 'parent' nor 'factory-bean' - can't "
                        + "generate bean name");
    }

    String id = generatedBeanName;

    // Top-level bean: use plain class name.
    // Increase counter until the id is unique.
    int counter = -1;
    while (counter == -1 || (registry.containsSingleton(id))) {
        counter++;
        id = generatedBeanName + "#" + counter;
    }

    return id;
}

From source file:org.kie.spring.factorybeans.KieImportFactoryBean.java

/**
 * Register the kie container bean to Spring Context.
 *//*from  w  ww .  j  a  va  2  s.  c o  m*/
private void regesiterKieContainer(ConfigurableListableBeanFactory configurableListableBeanFactory) {
    if (releaseId != null) {
        String kContainerBeanName = releaseId.getGroupId() + "#" + releaseId.getArtifactId() + "#"
                + releaseId.getVersion();

        if (!configurableListableBeanFactory.containsSingleton(kContainerBeanName)) {
            configurableListableBeanFactory.registerSingleton(kContainerBeanName, kContainer);
        }
    }
}

From source file:org.kie.spring.factorybeans.KieImportFactoryBean.java

protected void registerKieBases(ConfigurableListableBeanFactory configurableListableBeanFactory) {
    for (String kieBaseName : kContainer.getKieBaseNames()) {
        if (scannerEnabled) {
            registerKieBeanDef((BeanDefinitionRegistry) configurableListableBeanFactory, kieBaseName);

            if (!configurableListableBeanFactory.containsSingleton(releaseIdName + "#scanner")) {
                configurableListableBeanFactory.registerSingleton(releaseIdName + "#scanner", kieScanner);
            }//from  w  w w  .jav  a2 s  . c  om
        } else {
            KieBase kieBase = kContainer.getKieBase(kieBaseName);
            configurableListableBeanFactory.registerSingleton(kieBaseName, kieBase);
        }
        registerKieSessions(kieBaseName, configurableListableBeanFactory);
    }
}

From source file:org.solmix.runtime.support.spring.ContainerPostProcessor.java

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    Object inject = container;//from ww  w  . j  a  va2 s  .c  o  m
    if (inject == null) {
        inject = getContainerByName(Container.DEFAULT_CONTAINER_ID, beanFactory, true, null);
    } else {
        if (!beanFactory.containsBeanDefinition(Container.DEFAULT_CONTAINER_ID)
                && !beanFactory.containsSingleton(Container.DEFAULT_CONTAINER_ID)) {
            beanFactory.registerSingleton(Container.DEFAULT_CONTAINER_ID, container);
        }
    }
    for (String beanName : beanFactory.getBeanDefinitionNames()) {
        BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
        Object p = beanDefinition.getAttribute(AbstractBeanDefinitionParser.WIRE_CONTAINER_ATTRIBUTE);
        if (p == null)
            continue;
        String name = (String) beanDefinition.getAttribute(AbstractBeanDefinitionParser.WIRE_CONTAINER_NAME);
        String create = (String) beanDefinition
                .getAttribute(AbstractBeanDefinitionParser.WIRE_CONTAINER_CREATE);
        Object inj = inject;
        if (name != null) {
            if (container != null) {
                continue;
            }
            inj = getContainerByName(name, beanFactory, create != null, create);
        }
        beanDefinition.removeAttribute(AbstractBeanDefinitionParser.WIRE_CONTAINER_NAME);
        beanDefinition.removeAttribute(AbstractBeanDefinitionParser.WIRE_CONTAINER_ATTRIBUTE);
        beanDefinition.removeAttribute(AbstractBeanDefinitionParser.WIRE_CONTAINER_CREATE);
        if (create == null) {
            if (Boolean.valueOf(p.toString())) {
                beanDefinition.getPropertyValues().addPropertyValue("container", inj);
            } else {
                ConstructorArgumentValues constructorArgs = beanDefinition.getConstructorArgumentValues();
                insertConstructorArg(constructorArgs, inj);
            }
        }
    } //end loop bean.

}

From source file:org.springframework.context.annotation.ConfigurationClassPostProcessor.java

/**
 * Post-processes a BeanFactory in search of Configuration class BeanDefinitions;
 * any candidates are then enhanced by a {@link ConfigurationClassEnhancer}.
 * Candidate status is determined by BeanDefinition attribute metadata.
 * @see ConfigurationClassEnhancer/*from www. jav a 2 s. co  m*/
 */
public void enhanceConfigurationClasses(ConfigurableListableBeanFactory beanFactory) {
    Map<String, AbstractBeanDefinition> configBeanDefs = new LinkedHashMap<>();
    for (String beanName : beanFactory.getBeanDefinitionNames()) {
        BeanDefinition beanDef = beanFactory.getBeanDefinition(beanName);
        if (ConfigurationClassUtils.isFullConfigurationClass(beanDef)) {
            if (!(beanDef instanceof AbstractBeanDefinition)) {
                throw new BeanDefinitionStoreException("Cannot enhance @Configuration bean definition '"
                        + beanName + "' since it is not stored in an AbstractBeanDefinition subclass");
            } else if (logger.isWarnEnabled() && beanFactory.containsSingleton(beanName)) {
                logger.warn("Cannot enhance @Configuration bean definition '" + beanName
                        + "' since its singleton instance has been created too early. The typical cause "
                        + "is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor "
                        + "return type: Consider declaring such methods as 'static'.");
            }
            configBeanDefs.put(beanName, (AbstractBeanDefinition) beanDef);
        }
    }
    if (configBeanDefs.isEmpty()) {
        // nothing to enhance -> return immediately
        return;
    }

    ConfigurationClassEnhancer enhancer = new ConfigurationClassEnhancer();
    for (Map.Entry<String, AbstractBeanDefinition> entry : configBeanDefs.entrySet()) {
        AbstractBeanDefinition beanDef = entry.getValue();
        // If a @Configuration class gets proxied, always proxy the target class
        beanDef.setAttribute(AutoProxyUtils.PRESERVE_TARGET_CLASS_ATTRIBUTE, Boolean.TRUE);
        try {
            // Set enhanced subclass of the user-specified bean class
            Class<?> configClass = beanDef.resolveBeanClass(this.beanClassLoader);
            if (configClass != null) {
                Class<?> enhancedClass = enhancer.enhance(configClass, this.beanClassLoader);
                if (configClass != enhancedClass) {
                    if (logger.isDebugEnabled()) {
                        logger.debug(String.format(
                                "Replacing bean definition '%s' existing class '%s' with "
                                        + "enhanced class '%s'",
                                entry.getKey(), configClass.getName(), enhancedClass.getName()));
                    }
                    beanDef.setBeanClass(enhancedClass);
                }
            }
        } catch (Throwable ex) {
            throw new IllegalStateException("Cannot load configuration class: " + beanDef.getBeanClassName(),
                    ex);
        }
    }
}

From source file:org.springframework.context.support.DefaultLifecycleProcessor.java

/**
 * Retrieve all applicable Lifecycle beans: all singletons that have already been created,
 * as well as all SmartLifecycle beans (even if they are marked as lazy-init).
 * @return the Map of applicable beans, with bean names as keys and bean instances as values
 *//*from  w ww. j a  v  a2s .  c o m*/
protected Map<String, Lifecycle> getLifecycleBeans() {
    ConfigurableListableBeanFactory beanFactory = getBeanFactory();
    Map<String, Lifecycle> beans = new LinkedHashMap<>();
    String[] beanNames = beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
    for (String beanName : beanNames) {
        String beanNameToRegister = BeanFactoryUtils.transformedBeanName(beanName);
        boolean isFactoryBean = beanFactory.isFactoryBean(beanNameToRegister);
        String beanNameToCheck = (isFactoryBean ? BeanFactory.FACTORY_BEAN_PREFIX + beanName : beanName);
        if ((beanFactory.containsSingleton(beanNameToRegister)
                && (!isFactoryBean || matchesBeanType(Lifecycle.class, beanNameToCheck, beanFactory)))
                || matchesBeanType(SmartLifecycle.class, beanNameToCheck, beanFactory)) {
            Object bean = beanFactory.getBean(beanNameToCheck);
            if (bean != this && bean instanceof Lifecycle) {
                beans.put(beanNameToRegister, (Lifecycle) bean);
            }
        }
    }
    return beans;
}