Example usage for org.springframework.beans.factory.support AutowireCandidateQualifier attributeNames

List of usage examples for org.springframework.beans.factory.support AutowireCandidateQualifier attributeNames

Introduction

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

Prototype

@Override
    public String[] attributeNames() 

Source Link

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();/*from  w ww . ja v  a2s .com*/
            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;
}