Coverage Report - org.kuali.spring.util.PropertiesPlaceholderConfigurer
 
Classes in this File Line Coverage Branch Coverage Complexity
PropertiesPlaceholderConfigurer
79%
47/59
100%
6/6
1.353
 
 1  
 package org.kuali.spring.util;
 2  
 
 3  
 import java.util.List;
 4  
 import java.util.Properties;
 5  
 
 6  
 import org.kuali.spring.util.event.DefaultVisitListener;
 7  
 import org.slf4j.Logger;
 8  
 import org.slf4j.LoggerFactory;
 9  
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 10  
 import org.springframework.beans.factory.config.BeanDefinition;
 11  
 import org.springframework.beans.factory.config.BeanDefinitionVisitor;
 12  
 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
 13  
 import org.springframework.util.StringValueResolver;
 14  
 
 15  
 /**
 16  
  * 
 17  
  */
 18  4
 public class PropertiesPlaceholderConfigurer extends PlaceholderConfigurer {
 19  4
     private final Logger logger = LoggerFactory.getLogger(PropertiesPlaceholderConfigurer.class);
 20  
 
 21  4
     private PropertiesLoader loader = new PropertiesLoader();
 22  4
     private PropertiesConverter converter = new PropertiesConverter();
 23  4
     private PropertiesResolver resolver = new PropertiesResolver();
 24  
     private Properties properties;
 25  
     private String nullValue;
 26  
     private List<String> skipNames;
 27  
 
 28  
     protected boolean isSkip(String currentBeanName) {
 29  47
         if (skipNames == null) {
 30  38
             return false;
 31  
         } else {
 32  9
             return skipNames.contains(currentBeanName);
 33  
         }
 34  
     }
 35  
 
 36  
     protected BeanDefinitionVisitor getBeanDefinitionVisitor(StringValueResolver valueResolver) {
 37  4
         EnhancedBeanDefinitionVisitor visitor = new EnhancedBeanDefinitionVisitor();
 38  4
         visitor.setValueResolver(valueResolver);
 39  4
         DefaultVisitListener listener = new DefaultVisitListener();
 40  4
         listener.setPlogger(loader.getPlogger());
 41  4
         visitor.addListener(listener);
 42  4
         return visitor;
 43  
     }
 44  
 
 45  
     protected void processBeans(ConfigurableListableBeanFactory beanFactory, StringValueResolver valueResolver) {
 46  4
         BeanDefinitionVisitor visitor = getBeanDefinitionVisitor(valueResolver);
 47  4
         String[] beanNames = beanFactory.getBeanDefinitionNames();
 48  51
         for (String curName : beanNames) {
 49  47
             if (isSkip(curName)) {
 50  1
                 logger.info("Skipping placeholder processing on bean '" + curName + '"');
 51  1
                 continue;
 52  
             } else {
 53  46
                 logger.info("Processing placeholders on bean '" + curName + '"');
 54  
             }
 55  46
             BeanDefinition bd = beanFactory.getBeanDefinition(curName);
 56  
             try {
 57  46
                 visitor.visitBeanDefinition(bd);
 58  0
             } catch (Exception e) {
 59  0
                 throw new BeanDefinitionStoreException(bd.getResourceDescription(), curName, e.getMessage(), e);
 60  46
             }
 61  
         }
 62  4
     }
 63  
 
 64  
     protected StringValueResolver getStringValueResolver() {
 65  4
         ValueRetriever retriever = new PropertiesRetriever(this.properties);
 66  4
         DefaultStringValueResolver dsvr = new DefaultStringValueResolver();
 67  4
         dsvr.setResolver(this.resolver);
 68  4
         dsvr.setNullValue(this.nullValue);
 69  4
         dsvr.setRetriever(retriever);
 70  4
         return dsvr;
 71  
     }
 72  
 
 73  
     @Override
 74  
     protected void processPlaceholders(ConfigurableListableBeanFactory beanFactoryToProcess) {
 75  4
         this.properties = this.loader.loadProperties();
 76  4
         this.converter.convert(this.properties);
 77  4
         this.resolver.resolve(this.properties);
 78  
 
 79  4
         StringValueResolver valueResolver = getStringValueResolver();
 80  
 
 81  4
         processBeans(beanFactoryToProcess, valueResolver);
 82  
 
 83  
         // New in Spring 2.5: resolve placeholders in alias target names and
 84  
         // aliases as well.
 85  4
         beanFactoryToProcess.resolveAliases(valueResolver);
 86  
 
 87  
         // New in Spring 3.0: resolve placeholders in embedded values such as
 88  
         // annotation attributes.
 89  4
         beanFactoryToProcess.addEmbeddedValueResolver(valueResolver);
 90  
 
 91  4
     }
 92  
 
 93  
     public PropertiesLoader getLoader() {
 94  0
         return loader;
 95  
     }
 96  
 
 97  
     public void setLoader(PropertiesLoader loader) {
 98  4
         this.loader = loader;
 99  4
     }
 100  
 
 101  
     public PropertiesConverter getConverter() {
 102  0
         return converter;
 103  
     }
 104  
 
 105  
     public void setConverter(PropertiesConverter converter) {
 106  4
         this.converter = converter;
 107  4
     }
 108  
 
 109  
     public Properties getProperties() {
 110  0
         return properties;
 111  
     }
 112  
 
 113  
     public void setProperties(Properties properties) {
 114  0
         this.properties = properties;
 115  0
     }
 116  
 
 117  
     public PropertiesResolver getResolver() {
 118  0
         return resolver;
 119  
     }
 120  
 
 121  
     public void setResolver(PropertiesResolver resolver) {
 122  4
         this.resolver = resolver;
 123  4
     }
 124  
 
 125  
     public String getNullValue() {
 126  0
         return nullValue;
 127  
     }
 128  
 
 129  
     public void setNullValue(String nullValue) {
 130  0
         this.nullValue = nullValue;
 131  0
     }
 132  
 
 133  
     public List<String> getSkipNames() {
 134  0
         return skipNames;
 135  
     }
 136  
 
 137  
     public void setSkipNames(List<String> skipNames) {
 138  1
         this.skipNames = skipNames;
 139  1
     }
 140  
 
 141  
 }