Example usage for org.springframework.beans.factory.config BeanDefinition isAbstract

List of usage examples for org.springframework.beans.factory.config BeanDefinition isAbstract

Introduction

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

Prototype

boolean isAbstract();

Source Link

Document

Return whether this bean is "abstract", that is, not meant to be instantiated.

Usage

From source file:org.impalaframework.spring.service.exporter.NamedServiceAutoExportPostProcessor.java

void processBeanFactory(final BeanFactoryCallback callback) {

    ConfigurableListableBeanFactory listableBeanFactory = ObjectUtils.cast(beanFactory,
            ConfigurableListableBeanFactory.class);

    // gets list of all bean definitions in this context
    final String[] beanNames = listableBeanFactory.getBeanDefinitionNames();
    for (String beanName : beanNames) {

        final BeanDefinition beanDefinition = listableBeanFactory.getBeanDefinition(beanName);
        if (!beanDefinition.isAbstract()) {

            final Object bean = beanFactory.getBean(beanName);
            callback.doWithBean(beanName, bean);
        }/*from  w w w . jav  a2  s  . co  m*/
    }
}

From source file:org.kuali.kfs.sys.context.DataDictionaryConfigurationTest.java

public void testAllParentBeansAreAbstract() throws Exception {
    Field f = dataDictionary.getClass().getDeclaredField("ddBeans");
    f.setAccessible(true);//from  www  .j  a  v  a  2 s .com
    KualiDefaultListableBeanFactory ddBeans = (KualiDefaultListableBeanFactory) f.get(dataDictionary);
    List<String> failingBeanNames = new ArrayList<String>();
    for (String beanName : ddBeans.getBeanDefinitionNames()) {
        BeanDefinition beanDef = ddBeans.getMergedBeanDefinition(beanName);
        String beanClass = beanDef.getBeanClassName();
        // skip Rice classes
        if (beanClass != null && beanClass.startsWith("org.kuali.rice")) {
            continue;
        }
        if ((beanName.endsWith("-parentBean") || beanName.endsWith("-baseBean")) && !beanDef.isAbstract()) {
            failingBeanNames.add(beanName + " : " + beanDef.getResourceDescription() + "\n");
        }
    }
    assertEquals("The following parent beans are not defined as abstract:\n" + failingBeanNames, 0,
            failingBeanNames.size());
}

From source file:org.kuali.kfs.sys.context.DataDictionaryConfigurationTest.java

protected void somethingShouldHaveParentBeans(Class<?> baseClass, List<String> exclusions) throws Exception {
    Field f = dataDictionary.getClass().getDeclaredField("ddBeans");
    f.setAccessible(true);/*from w  ww .ja v a2  s.c  om*/
    KualiDefaultListableBeanFactory ddBeans = (KualiDefaultListableBeanFactory) f.get(dataDictionary);
    List<String> failingBeanNames = new ArrayList<String>();

    for (String beanName : ddBeans.getBeanDefinitionNames()) {
        if (doesBeanNameMatchList(beanName, exclusions)) {
            continue;
        }
        BeanDefinition beanDef = ddBeans.getMergedBeanDefinition(beanName);
        String beanClass = beanDef.getBeanClassName();
        if (beanClass == null) {
            System.err.println("ERROR: Bean " + beanName + " has a null class.");
        }
        if (!beanDef.isAbstract() && beanClass != null
                && baseClass.isAssignableFrom(Class.forName(beanClass))) {
            try {
                BeanDefinition parentBean = ddBeans.getBeanDefinition(beanName + "-parentBean");
            } catch (NoSuchBeanDefinitionException ex) {
                failingBeanNames.add(beanName + " : " + beanDef.getResourceDescription() + "\n");
            }
        }
    }
    assertEquals("The following " + baseClass.getSimpleName() + " beans do not have \"-parentBean\"s:\n"
            + failingBeanNames, 0, failingBeanNames.size());
}

From source file:org.kuali.kfs.sys.context.SpringConfigurationConsistencyCheckTest.java

public void testParentBeansShouldBeAbstract() {
    List<String> failingBeanNames = new ArrayList<String>();
    for (String beanName : SpringContext.applicationContext.getBeanDefinitionNames()) {
        BeanDefinition beanDef = SpringContext.applicationContext.getBeanFactory().getBeanDefinition(beanName);
        // skip entries in the rice import files or in testing files
        if (StringUtils.contains(beanDef.getResourceDescription(), "spring-kfs-imported-rice-beans.xml")
                || StringUtils.contains(beanDef.getResourceDescription(), "-test.xml")) {
            continue;
        }//from w  w  w. j  a v a2s .  c o  m
        if (beanName.endsWith("-parentBean") && !beanDef.isAbstract()) {
            failingBeanNames.add(beanName + " : " + beanDef.getResourceDescription() + "\n");
        }
    }
    assertEquals("The following parent beans are not defined as abstract:\n" + failingBeanNames, 0,
            failingBeanNames.size());
}

From source file:org.kuali.kfs.sys.context.SpringConfigurationConsistencyCheckTest.java

public void testServicesShouldHaveParentBeans() {
    List<String> failingBeanNames = new ArrayList<String>();
    for (String beanName : SpringContext.applicationContext.getBeanDefinitionNames()) {
        // skip testing mock beans
        if (StringUtils.containsIgnoreCase(beanName, "mock")) {
            continue;
        }/* w w w.ja v a 2  s  .  c  o m*/
        BeanDefinition beanDef = SpringContext.applicationContext.getBeanFactory().getBeanDefinition(beanName);
        // skip entries in the rice import files or in testing files
        if (StringUtils.contains(beanDef.getResourceDescription(), "spring-kfs-imported-rice-beans.xml")
                || StringUtils.contains(beanDef.getResourceDescription(), "-test.xml")) {
            continue;
        }
        String serviceClass = beanDef.getBeanClassName();
        if (StringUtils.contains(serviceClass, "service.impl") && //should be a service
                !StringUtils.startsWith(serviceClass, "org.kuali.rice") && //let rice test their code
                !beanDef.isAbstract()) { //abstract = parent

            try {
                BeanDefinition parentBean = SpringContext.applicationContext.getBeanFactory()
                        .getBeanDefinition(beanName + "-parentBean");
                String parentClass = parentBean.getBeanClassName();
            } catch (NoSuchBeanDefinitionException ex) {
                failingBeanNames.add(beanName + " : " + beanDef.getResourceDescription() + "\n");
            }
        }
    }
    assertEquals("The following service beans do not have \"-parentBean\"s:\n" + failingBeanNames, 0,
            failingBeanNames.size());
}

From source file:org.kuali.kfs.sys.context.SpringConfigurationConsistencyCheckTest.java

public void testDAOsShouldBeDAOs() throws Exception {
    List<String> failingBeanNames = new ArrayList<String>();
    for (String beanName : SpringContext.applicationContext.getBeanDefinitionNames()) {
        BeanDefinition beanDef = SpringContext.applicationContext.getBeanFactory().getBeanDefinition(beanName);
        // skip entries in the rice import files or in testing files
        if (StringUtils.contains(beanDef.getResourceDescription(), "spring-kfs-imported-rice-beans.xml")
                || StringUtils.contains(beanDef.getResourceDescription(), "-test.xml")) {
            continue;
        }//w  w w . j a v a2  s  .com
        if (!beanDef.isAbstract()) {
            Object service = TestUtils.getUnproxiedService(beanName);
            if (beanName.endsWith("Dao") && !service.getClass().getName().endsWith("Proxy")
                    && !service.getClass().getName().startsWith("org.kuali.rice")) {
                if (!(service instanceof PlatformAwareDao)) {
                    failingBeanNames.add(" *** FAIL: " + beanName + " does not implement PlatformAwareDao (is "
                            + service.getClass().getName() + ")\n" + " : " + beanDef.getResourceDescription()
                            + "\n");
                }
                if (!(service instanceof PlatformAwareDaoBaseOjb)
                        && !(service instanceof PlatformAwareDaoBaseJdbc)) {
                    failingBeanNames
                            .add(" *** FAIL: " + beanName + " does not extend PlatformAwareDaoBaseOjb/Jdbc (is "
                                    + service.getClass().getName() + ")\n" + " : "
                                    + beanDef.getResourceDescription() + "\n");
                }
            }
        }
    }
    for (Map.Entry<String, PlatformAwareDao> dao : SpringContext.getBeansOfType(PlatformAwareDao.class)
            .entrySet()) {
        Object service = ProxyUtils.getTargetIfProxied(dao.getValue());
        if (!dao.getKey().endsWith("Dao") && !dao.getKey().endsWith("DaoBase")
                && !service.getClass().getName().startsWith("org.kuali.rice")
                && !FiscalYearMakerImpl.class.isAssignableFrom(service.getClass())) {
            failingBeanNames.add(" *** FAIL: Bean " + dao.getKey() + " implements PlatformAwareDao ("
                    + service.getClass().getName() + ") but its name does not end in 'Dao'\n");
        }
    }

    assertEquals("The following problems were detected in the DAO definitions:\n" + failingBeanNames, 0,
            failingBeanNames.size());
}

From source file:org.springframework.flex.config.RemotingAnnotationPostProcessor.java

/**
 * Helper that searches the BeanFactory for beans annotated with @RemotingDestination, being careful not to force
 * eager creation of the beans if it can be avoided.
 * /*from ww  w  .  j a v  a2  s .  com*/
 * @param beanFactory the BeanFactory to search
 * @return a set of collected RemotingDestinationMetadata
 */
private Set<RemotingDestinationMetadata> findRemotingDestinations(ConfigurableListableBeanFactory beanFactory) {
    Set<RemotingDestinationMetadata> remotingDestinations = new HashSet<RemotingDestinationMetadata>();
    Set<String> beanNames = new HashSet<String>();
    beanNames.addAll(Arrays.asList(beanFactory.getBeanDefinitionNames()));
    if (beanFactory.getParentBeanFactory() instanceof ListableBeanFactory) {
        beanNames.addAll(Arrays
                .asList(((ListableBeanFactory) beanFactory.getParentBeanFactory()).getBeanDefinitionNames()));
    }
    for (String beanName : beanNames) {
        if (beanName.startsWith("scopedTarget.")) {
            continue;
        }
        RemotingDestination remotingDestination = null;
        BeanDefinition bd = beanFactory.getMergedBeanDefinition(beanName);
        if (bd.isAbstract() || bd.isLazyInit()) {
            continue;
        }
        if (bd instanceof AbstractBeanDefinition) {
            AbstractBeanDefinition abd = (AbstractBeanDefinition) bd;
            if (abd.hasBeanClass()) {
                Class<?> beanClass = abd.getBeanClass();
                remotingDestination = AnnotationUtils.findAnnotation(beanClass, RemotingDestination.class);
                if (remotingDestination != null) {
                    remotingDestinations
                            .add(new RemotingDestinationMetadata(remotingDestination, beanName, beanClass));
                    continue;
                }
            }
        }
        Class<?> handlerType = beanFactory.getType(beanName);
        if (handlerType != null) {
            remotingDestination = AnnotationUtils.findAnnotation(handlerType, RemotingDestination.class);
        } else {
            if (log.isDebugEnabled()) {
                log.debug("Could not get type of bean '" + beanName + "' from bean factory.");
            }
        }
        if (remotingDestination != null) {
            remotingDestinations
                    .add(new RemotingDestinationMetadata(remotingDestination, beanName, handlerType));
        }
    }
    return remotingDestinations;
}

From source file:org.statefulj.framework.core.StatefulFactory.java

/**
 * Iterate thru all beans and fetch the StatefulControllers
 *
 * @param reg//  w  ww.j  av a2  s .  c  o  m
 * @return
 * @throws ClassNotFoundException
 */
private void mapControllerAndEntityClasses(BeanDefinitionRegistry reg,
        Map<String, Class<?>> controllerToEntityMapping, Map<Class<?>, String> entityToRepositoryMapping,
        Map<Class<?>, Set<String>> entityToControllerMappings) throws ClassNotFoundException {

    // Loop thru the bean registry
    //
    for (String bfName : reg.getBeanDefinitionNames()) {

        BeanDefinition bf = reg.getBeanDefinition(bfName);

        if (bf.isAbstract()) {
            logger.debug("Skipping abstract bean " + bfName);
            continue;
        }

        Class<?> clazz = getClassFromBeanDefinition(bf, reg);

        if (clazz == null) {
            logger.debug("Unable to resolve class for bean " + bfName);
            continue;
        }

        // If it's a StatefulController, map controller to the entity and the entity to the controller
        //
        if (ReflectionUtils.isAnnotationPresent(clazz, StatefulController.class)) {
            mapEntityWithController(controllerToEntityMapping, entityToControllerMappings, bfName, clazz);
        }

        // Else, if the Bean is a Repository, then map the
        // Entity associated with the Repo to the PersistenceSupport object
        //
        else if (RepositoryFactoryBeanSupport.class.isAssignableFrom(clazz)) {
            mapEntityToRepository(entityToRepositoryMapping, bfName, bf);
        }
    }
}