1 |
54525
|
panagiotis
|
package eu.dnetlib.repo.manager.config;
|
2 |
49236
|
panagiotis
|
|
3 |
|
|
import org.springframework.beans.BeansException;
|
4 |
|
|
import org.springframework.beans.factory.InitializingBean;
|
5 |
|
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
6 |
|
|
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
|
7 |
|
|
|
8 |
|
|
import java.util.Properties;
|
9 |
|
|
|
10 |
|
|
/**
|
11 |
|
|
* CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
|
12 |
|
|
* override the previous. It also supports property expansion like:
|
13 |
|
|
*
|
14 |
|
|
* <code>
|
15 |
|
|
* something = 1
|
16 |
|
|
* somethingelse = 2
|
17 |
|
|
* test = ${something}/${somethingelse}
|
18 |
|
|
* </code>
|
19 |
|
|
*
|
20 |
|
|
* <p>
|
21 |
|
|
* And if you override something to XX, then test will become XX/2
|
22 |
|
|
* </p>
|
23 |
|
|
*
|
24 |
|
|
*
|
25 |
|
|
* @author marko
|
26 |
|
|
*
|
27 |
|
|
*/
|
28 |
|
|
public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
|
29 |
|
|
|
30 |
|
|
private Properties properties;
|
31 |
|
|
|
32 |
|
|
public void afterPropertiesSet() throws Exception {
|
33 |
|
|
this.properties = mergeProperties();
|
34 |
|
|
|
35 |
|
|
// Convert the merged properties, if necessary.
|
36 |
|
|
convertProperties(this.properties);
|
37 |
|
|
|
38 |
|
|
logger.debug("Properties: " + properties);
|
39 |
|
|
}
|
40 |
|
|
|
41 |
|
|
@Override
|
42 |
|
|
protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
|
43 |
|
|
super.processProperties(beanFactoryToProcess, props);
|
44 |
|
|
}
|
45 |
|
|
|
46 |
|
|
public Properties getProperties() {
|
47 |
|
|
return properties;
|
48 |
|
|
}
|
49 |
|
|
|
50 |
|
|
public void setProperties(final Properties properties) {
|
51 |
|
|
super.setProperties(properties);
|
52 |
|
|
|
53 |
|
|
this.properties = properties;
|
54 |
|
|
}
|
55 |
|
|
}
|