Example usage for org.springframework.beans.factory.support AbstractBeanDefinition getQualifiers

List of usage examples for org.springframework.beans.factory.support AbstractBeanDefinition getQualifiers

Introduction

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

Prototype

public Set<AutowireCandidateQualifier> getQualifiers() 

Source Link

Document

Return all registered qualifiers.

Usage

From source file:org.nextframework.persistence.GenericDAO.java

public JdbcTemplate getJdbcTemplate() {
    if (jdbcTemplate == null) {
        String[] beans = applicationContext.getBeanNamesForType(DataSource.class);
        if (beans.length == 1) {
            jdbcTemplate = new JdbcTemplate(applicationContext.getBean(beans[0], DataSource.class));
        } else if (applicationContext instanceof ConfigurableApplicationContext) {
            //TODO THIS LOGIC SHOULD NOT BE HERE
            //check the qualifiers to find the correct datasource
            ConfigurableListableBeanFactory beanFactory = ((ConfigurableApplicationContext) applicationContext)
                    .getBeanFactory();/* w  w  w  .j  a va2 s . c  o  m*/
            for (String beanName : beans) {
                AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) beanFactory
                        .getBeanDefinition(beanName);
                Set<AutowireCandidateQualifier> qualifiers = beanDefinition.getQualifiers();
                for (AutowireCandidateQualifier autowireCandidateQualifier : qualifiers) {
                    String[] attributeNames = autowireCandidateQualifier.attributeNames();
                    for (String attribute : attributeNames) {
                        Object value = autowireCandidateQualifier.getMetadataAttribute(attribute).getValue();
                        if (getPersistenceContext().equals(value)) {
                            jdbcTemplate = new JdbcTemplate(
                                    applicationContext.getBean(beanName, DataSource.class));
                            return jdbcTemplate;
                        }
                    }
                }
            }
        }
    }
    return jdbcTemplate;
}