1
|
package eu.dnetlib.validator.service.config;
|
2
|
|
3
|
import java.util.Properties;
|
4
|
|
5
|
import org.springframework.beans.BeansException;
|
6
|
import org.springframework.beans.factory.InitializingBean;
|
7
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
8
|
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
|
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
|
}
|